2014-01-28 116 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>();