Java NullPointerException问题

时间:2014-09-14 01:24:35

标签: java nullpointerexception

所以,我很确定我做的一切都正确,但是当我运行我的程序时,它给了我这个日志:

Exception in thread "main" java.lang.NullPointerException
    at com.BLANK.handler.ButtonHandler.<init>(ButtonHandler.java:19)
    at com.BLANK.BLANKScreen.<init>(BLANKScreen.java:28)
    at com.BLANK.BLANKWindow.<init>(BLANKWindow.java:28)
    at com.BLANK.BLANKWindow.main(BLANKWindow.java:11)

这是在ButtonHandler类中给我错误的代码:

public Button button;

public int buttonX = button.x;
public int buttonY = button.y;
public int buttonSizeX = button.xSize;
public int buttonSizeY = button.ySize;

这是它所指的按钮整数:

public int x;
public int y;
public int xSize;
public int ySize;

public Button(int x, int y, int xSize, int ySize, String s, Graphics g) {
    this.x = x;
    this.y = y;
    this.xSize = xSize;
    this.ySize = ySize;
}

任何人都对我做错了什么以及如何解决它有任何想法?

P.S。如果您需要更多代码片段,请告诉我,我会提供它们。

4 个答案:

答案 0 :(得分:1)

您需要在使用之前初始化变量... 通过这样做,您将获得一个空指针

public Button button;
public int buttonX = button.x;

因为按钮尚未初始化。 按钮为空,当您尝试对空的对象执行某些操作时,您会得到一个空指针。

答案 1 :(得分:1)

问题

当您声明:

public Button button;

public int buttonX = button.x;

您正在创建和初始化类的字段:

  • button没有任何初始化,因此默认为null
  • buttonX应该被赋予button.x,但是这个表达式试图获取null对象的字段,这会导致NPE(这是此异常的意思)

解决方案

直接解决方案是在声明其他字段之前初始化button。但是从我看到你的意思来说,不要使用字段来存储&#34; button.x。在需要的地方直接使用button.x

答案 2 :(得分:1)

你宣布一个按钮:

public Button button;

并且在没有初始化的情况下,您尝试分配:

public int buttonX = button.x;

为您提供NPE,因为button仍为null

答案 3 :(得分:1)

如果这个

public Button button;

public int buttonX = button.x;
public int buttonY = button.y;
public int buttonSizeX = button.xSize;
public int buttonSizeY = button.ySize;

是一个连续的代码块,它们之间没有代码行,那么你的代码就行不通了。 您声明了一个新变量button。默认情况下,此变量将使用null进行初始化。之后,您尝试访问该变量的属性,此时此变量为null。这会导致您NullPointerException

要准确访问属性,您需要正确初始化变量。

public Button button = new Button(x, y, xSize, ySize, string, graphics);