引用变量时出现空指针异常

时间:2014-01-28 21:56:31

标签: java nullpointerexception

我试图在我的类中的方法中引用变量并继续运行NullPointerException。我知道它是在变量pbook中从addPerson方法引用时发生的。为什么会发生这种情况,我该怎么办呢?

public class Phonebook <T> {

  private LinkedList<T> pbook;

  public T findPerson(T person) {
    for (int i = 0; i < pbook.size(); i++) {
      if (pbook.get(i).equals(person)) {
        return person;
      }
      else
      {
        i++;
      }
    }
    return null;
  }

  public void addPerson(T person) {
    pbook.addFirst(person);
  }

  public void deletePerson(T person) {
    for (int i = 0; i < pbook.size(); i++) {
      if (pbook.get(i).equals(person)) {
        pbook.remove(i);
      }
      else
      {
        i++;
      }
    }
  }


  /**
   * @param args
   */
  public static void main(String[] args){

    try{
     Phonebook<Integer> sspb = new Phonebook<Integer>();
     Phonebook<String> idpb = new Phonebook<String>();
     sspb.addPerson(1234567890);
     idpb.addPerson("Bob");

    }
    catch (Exception e){
      e.printStackTrace();
    }
  }
}

4 个答案:

答案 0 :(得分:4)

您必须添加构造函数来实例化LinkedList

public Phonebook() {
    pbook = new LinkedList<T>();
}

答案 1 :(得分:3)

变化:

private LinkedList<T> pbook;

要:

private LinkedList<T> pbook = new LinkedList<T>();

答案 2 :(得分:1)

private LinkedList<T> pbook;您不创建列表。

试试这个。

private LinkedList<T> pbook = new LinkedList<T>()

答案 3 :(得分:1)

1)你可以定义一个构造函数,例如像这样。

public Phonebook(LinkedList<T> pbook){
     this.pbook = pbook;
}

然后调用代码必须设置
实例化电话簿时pbook

2)您可以初始化声明它的pbook

private LinkedList<T> pbook = new LinkedList<T>();