NullPointerException Java帮助

时间:2010-04-19 21:30:00

标签: java nullpointerexception

在过去的几个小时里,我一直在试图解决这个问题。每次我点击一个应该打开JFrame的JButton(它确实如此),我得到一个堆栈跟踪,说我在这些代码位上有一个空点异常:

在A班我有:

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

和B类

super.getSomeBtn().setVisible(false);

这是堆栈跟踪说错误在上面两节中的地方。 我有一条与上面B类完全一致的线,它运行正常吗?

真的卡在这里!

3 个答案:

答案 0 :(得分:2)

如果使用eclipse之类的IDE,请在NullPointerException上设置断点。然后,当您调试时,检查该点的局部变量,以确定什么是null。似乎很可能从这段代码中getSomeBtn()返回null,这意味着你的B类没有初始化它,或者它正在调用错误的超类构造函数。但是,这里确实没有足够的细节/背景来提供任何帮助。如果有疑问,请调试器出来!

答案 1 :(得分:1)

以下是3个兴趣点,NPE可能会发生:

  • super.getSomeBtn()可以为null;
  • userSession可以为null
  • 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);