用Java实现Iterable

用Java实现Iterable,java,iterator,Java,Iterator,我有以下代码 public class A extends Iterable<Integer> { ... public Iterator<Integer> iterator() { return new Iterator<Integer>() { A a; public boolean hasNext() { ... }

我有以下代码

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扩展了Iterable{
...
公共迭代器迭代器(){
返回新的迭代器(){
A A;
公共布尔hasNext(){
...
}
公共整数next(){
...
}
公共空间删除(){
...
} 
};
我想用调用迭代器方法的实例初始化匿名类中的“a”字段。可能吗

谢谢。

你不需要

您可以在外部类上调用方法,通常在内部类中调用。
编译时,编译器将自动生成一个隐藏字段,其中包含对外部类的引用

要自己引用此变量,可以编写
A.this
A.this
是编译器生成的字段,相当于
A
字段)

您不需要这样做

您可以在外部类上调用方法,通常在内部类中调用。
编译时,编译器将自动生成一个隐藏字段,其中包含对外部类的引用

要自己引用此变量,可以编写
A.this
A.this
是编译器生成的字段,与
A
字段等效)

尝试以下操作:

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'
        }
      }      
  }

}
公共类A扩展了Iterable{
公共迭代器迭代器(){
最终A=此;
返回新的迭代器(){
公共布尔hasNext(){
//在这里你可以用“a”
}
}      
}
}
试试这个:

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'
        }
      }      
  }

}
公共类A扩展了Iterable{
公共迭代器迭代器(){
最终A=此;
返回新的迭代器(){
公共布尔hasNext(){
//在这里你可以用“a”
}
}      
}
}
使用:

A a = A.this
使用:


错。他想要外部的
this
。它的表述方式是外部的“this”。如果您在方法iterator()中,并且您要求使用“this”(正如我所写的),那么它指的是iterator()的对象是一个方法。因此“a”指的是类型为“a”的对象。错误。他想要外部的
this
。它的表述方式是外部的“this”。如果你在方法迭代器()中,并且你要求“this”(如我所写),它指的是迭代器()所属的对象是一个方法。因此“a”是指“a”类型的对象。它应该是
a implements Iterable
。它应该是
a implements Iterable