我试图在我的类中的方法中引用变量并继续运行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();
}
}
}
答案 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>();