2014-01-28 84 views
0

我正在尝试在我的类中的方法中引用一个变量,并继续运行到NullPointerException。我知道它是从addPerson方法引用时发生在变量pbook上的。为什么会发生这种情况,我该如何解决它?空指针引用变量异常

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(); 
    } 
    } 
} 
+0

注意,尽管在一些语言'LinkedList的 pbook;'*不*创建新的对象,在Java中没有。 – Radiodef

回答

4

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

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

变化:

private LinkedList<T> pbook; 

要:

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

private LinkedList<T> pbook;你不创建一个列表。

试试这个。

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

1)您可以定义一个构造函数,例如喜欢这个。

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

然后调用代码将有实例电话簿时设置
pbook

2)您可以初始化pbook您声明的地方。

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