在过去的几个小时里,我一直在试图解决这个问题。每次我点击一个应该打开JFrame的JButton(它确实如此),我得到一个堆栈跟踪,说我在这些代码位上有一个空点异常:
在A班我有:
aButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
B instanceofB = new B(userSession.getBalance());
}
});
和B类
super.getSomeBtn().setVisible(false);
这是堆栈跟踪说错误在上面两节中的地方。 我有一条与上面B类完全一致的线,它运行正常吗?
真的卡在这里!
答案 0 :(得分:2)
如果使用eclipse之类的IDE,请在NullPointerException上设置断点。然后,当您调试时,检查该点的局部变量,以确定什么是null。似乎很可能从这段代码中getSomeBtn()返回null,这意味着你的B类没有初始化它,或者它正在调用错误的超类构造函数。但是,这里确实没有足够的细节/背景来提供任何帮助。如果有疑问,请调试器出来!
答案 1 :(得分:1)
以下是3个兴趣点,NPE可能会发生:
B类的一些初始化代码也可以抛出此异常,例如此类代码
Object _one = null; Object _two = _one.getClass();
将导致NPE。
通过所有这三点,我想,你会找到一些东西。断点/日志/断言 - 一切都会有所帮助。
答案 2 :(得分:0)
您可以细分这些语句,逐个检查每个引用的null。您可以使用print / log语句或断言:
assert aButton != null;
aButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
assert userSession != null;
B instanceofB = new B(userSession.getBalance());
});
...
assert super.getSomeBtn() != null;
super.getSomeBtn().setVisible(false);