有人向我解释为什么我得到一个空指针异常?在java中可观察为空
private Observer obs1;
private Observer obs2;
public void notifyObservers(Observable observable) {
String str1 = "Observer 1 :\n";
String str2 = "Observer 2 :\n";
try {
Student[] studList = returnStudents();
for (int i=0;i<returnStudents().length;i++) {
if(studList[i].computeAverage() >= 5)
str1 = str1 + studList[i].toString() + "\n";
else
str2 = str2 + studList[i].toString() + "\n";
}
} catch (MyException ex) {
System.out.println(ex.getMessage());
}
obs1.update(observable, str1);
obs2.update(observable, str2);
}
我的观察类:
public class Watcher implements Observer {
public void update(Observable arg0, Object arg1) {
System.out.println("The list of students has changed");
System.out.println(arg1);
}
}
我会解释一下wwhat发生在这里。我制作了一个管理学生名单的程序。我可以添加/删除学生。 每个之后加上我打电话
setChanged();
notifyObservers(this);
在这里,我想这observer1显示了平均品位> 5 observer2的studens平均< 5. 我得到一个空指针异常显示的那些这里:obs1.update(observable, str1);
我必须说我试图打印str1
和str2
并且它们包含学生名单。所以我的猜测是,问题是在observable
你在哪里给'obs1'和'obs2'赋值? NPE似乎是无效的。 –
将'final'修饰符添加到变量中,并且永远不必询问一些问题。 –