Lassen Sie uns sagen, dass ich den folgenden Code haben:Wie `this` Punkt auf der äußeren Klasse zu machen, wo die innere Klasse die gleiche Methode Namen hat
abstract class MyStream
{
public abstract Iterable<Integer> getIterable();
public MyStream append(final int i)
{
return new MyStream()
{
@Override
public Iterable<Integer> getIterable()
{
return cons(/*outer class's*/getIterable(), i);
}
};
}
public static Iterable<Integer> cons(Iterable<Integer> iter, int i) { /* implementation */ }
}
Wie kann ich getIterable
der äußeren Klasse von der inneren Bezugs Klasse mit dem gleichen Namen?
MyStream.this
sollte hier auf die innere Klasse zeigen, richtig? Wie zeige ich eine äußere Klasse mit demselben Namen an?
Sie könnten eine lokale Variable innerhalb der Append-Methode verwenden und setzen Sie diese auf –
@RichardTingle, das ist meine aktuelle Lösung, aber es ist nicht elegant. Ich frage mich, ob es eine bessere Lösung gibt. – HuStmpHrrr