在Java中实现Iterable

时间:2010-04-25 17:25:13

标签: java iterator

我有以下代码

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实例。有可能吗?

谢谢。

3 个答案:

答案 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