当我在其上使用.getNext()时,如何让对象的“head”节点“提前”等于“Null”?我每次都得到NullPointerException
LinkedNode具有参数LinkedNode和E数据。
package sets;
import java.util.Iterator;
import java.util.NoSuchElementException;
class LinkedNodeIterator<E> implements Iterator<E> {
private LinkedNode<E> ahead;
private E data;
public LinkedNodeIterator(LinkedNode<E> head) {
ahead = head;
data = ahead.getData();
}
public boolean hasNext(){
boolean here = false;
LinkedNode<E> currNode = this.ahead;
if(currNode.getNext() != null) here = true;
return (here);
}
//othercode...
}
和
package sets;
public class LinkedNode<E> {
private E data;
private LinkedNode<E> next;
public LinkedNode(E data, LinkedNode<E> next) {
this.data = data;
this.next = next;
}
public E getData(){
return data;
}
public LinkedNode<E> getNext(){
return this.next;
}
}
答案 0 :(得分:0)
鉴于这个程序,假设没有更多的方法可以修改ahead
变量,前面的唯一可能的方法是null,就是在初始化中:换句话说,ahead
是仅当参数head
为空时才为null。
我建议你做两件事:
确保没有更多方法修改ahead
变量。实现这一目标的一种可靠方法是将其声明为final
(也是一种很好的做法)。
在构造函数的第一行添加一个断言:
assert head!=null;
...并使用&#34; java -ea&#34;运行您的程序启用断言。