Hãy nói rằng tôi có đoạn mã sau:Làm thế nào để làm cho 'this` điểm đến các lớp bên ngoài nơi lớp bên trong có tên cùng một phương pháp
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 */ }
}
Làm thế nào tôi có thể tham khảo getIterable
của lớp bên ngoài từ bên trong lớp học cùng tên?
MyStream.this
nên trỏ đến lớp bên trong ở đây, phải không? Làm thế nào để hiển thị một lớp bên ngoài có cùng tên?
Bạn có thể sử dụng biến cục bộ trong phương thức chắp thêm và đặt nó thành –
@RichardTingle đó là giải pháp hiện tại của tôi, nhưng nó không thanh lịch. tôi tự hỏi nếu có một giải pháp tốt hơn. – HuStmpHrrr