2010-04-19 109 views
0

在过去的几个小时里,我一直在努力解决这个问题。每次我上了一个JButton,单击应该会打开一个JFrame(和它),我得到一个堆栈跟踪说我必须在这些代码位零点例外:NullPointerException Java帮助

A类中我有:

aButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     B instanceofB = new B(userSession.getBalance()); 
    } 
}); 

和B类

super.getSomeBtn().setVisible(false); 

这就是说栈跟踪误差是在上述两个部分。 我有一个完全一样的B类上面的一个线,它工作正常吗?

真的卡在这里!

+0

谢谢大家非常有用的回复 – KP65 2010-04-19 22:03:56

回答

2

如果使用IDE等eclipse,请在NullPointerException上设置断点。然后当你调试时检查当时的局部变量来计算出什么是null。 getSomeBtn()返回null意味着你的B类没有初始化它,或者它正在调用错误的超类构造函数。但是,这里确实没有足够的细节/上下文来提供任何帮助。如有疑问,请将调试器拿出来!

0

你可以分解这些语句来逐个检查每个引用的空值。您可以使用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); 
1

这里有利益,哪里NPE可能发生3分:

  • super.getSomeBtn()可以为null;
  • userSession可以为空
  • B类的一些初始化代码可以抛出该异常还,例如这样的代码

    对象_ONE = NULL; Object _two = _one.getClass();

在现场声明期间会导致NPE。

看看这三点,我想你会发现一些东西。断点/日志/断言 - 一切都将有所帮助。