我有以下代码
public class A extends Iterable<Integer> {
...
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
A a;
public boolean hasNext() {
...
}
public Integer next() {
...
}
public void remove(){
...
}
};
我想初始化匿名类中的“a”字段,其中调用了迭代器方法的A实例。有可能吗?
谢谢。
答案 0 :(得分:11)
你不需要。
您可以通常在内部类中调用外部类的方法 编译时,编译器将自动生成一个隐藏字段,其中包含对外部类的引用。
要自己引用此变量,您可以编写A.this
。 (A.this
是编译器生成的字段,相当于您的a
字段)
答案 1 :(得分:1)
试试这个:
public class A extends Iterable<Integer> {
public Iterator<Integer> iterator() {
final A a = this;
return new Iterator<Integer>() {
public boolean hasNext() {
// here you can use 'a'
}
}
}
}
答案 2 :(得分:1)
使用:
A a = A.this