如何让字段节点停止评估为Null?

时间:2015-02-21 22:24:13

标签: java nullpointerexception linked-list nodes

当我在其上使用.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;
  }
}

1 个答案:

答案 0 :(得分:0)

鉴于这个程序,假设没有更多的方法可以修改ahead变量,前面的唯一可能的方法是null,就是在初始化中:换句话说,ahead是仅当参数head为空时才为null。

我建议你做两件事:

  • 确保没有更多方法修改ahead变量。实现这一目标的一种可靠方法是将其声明为final(也是一种很好的做法)。

  • 在构造函数的第一行添加一个断言:

     assert head!=null;

...并使用&#34; java -ea&#34;运行您的程序启用断言。