Powiedzmy mam następujący kod:Jak `this` punkt do zewnętrznej klasy, w których wewnętrzna klasa ma taką samą nazwę metody
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 */ }
}
Jak mogę odwołać getIterable
zewnętrznej klasy z wewnętrzną klasa o tej samej nazwie?
MyStream.this
powinien wskazywać tutaj klasę wewnętrzną, prawda? Jak pokazać zewnętrzną klasę o tej samej nazwie?
Można użyć zmiennej lokalnej w metodzie dołączania i ustawić ją jako –
@RichardTingle to moje obecne rozwiązanie, ale nie jest eleganckie. Zastanawiam się, czy istnieje lepsze rozwiązanie. – HuStmpHrrr