1
방금 작성한 코드의 일부입니다. 기본적으로 클래스 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);
}
};
}
}
당신은'nodeMap'이'Iterator' 익명의 내부 클래스에서 어떻게 접근 할 수 있는지 말합니까? –