[英]Java iterator variable scope
这是我刚编写的代码的一部分。 基本上, Document
类实现了Iterable
接口。 迭代器将像链接列表一样遍历节点。 在remove
方法中,我使用了Document
类范围内的nodeMap
引用。 但是, this
引用应引用Iterator
本身,因此它怎么能找到该对象? 还是Iterator
是Document
的子类?
我以前没有想过这个问题。 突然让自己感到困惑。
public class Document implements Iterable<DocumentNode> {
Map<Integer, DocumentNode> nodeMap;
public Iterator<DocumentNode> iterator() {
return new Iterator<DocumentNode>() {
DocumentNode node = nodeMap.get(0);
@Override
public boolean hasNext() {
return node != null && node.next != null;
}
@Override
public DocumentNode next() {
if (node == null) {
throw new IndexOutOfBoundsException();
}
return node.next;
}
@Override
public void remove() {
if (node == null) {
throw new IndexOutOfBoundsException();
}
if (node.prev != null) {
node.prev.next = node.next;
}
if (node.next != null) {
node.next.prev = node.prev;
}
nodeMap.remove(node.documentID);
}
};
}
}
迭代器是Document
类的匿名内部类的实例。 有两种内部类:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.