所以,我很确定我做的一切都正确,但是当我运行我的程序时,它给了我这个日志:
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。如果您需要更多代码片段,请告诉我,我会提供它们。
答案 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);