我有两个类:Main
和Sub1
。anArray
在Sub1
中声明如下:
public static int[] anArray;
public Sub1 () {
anArray = new int[15];
然后在
Sub1
中,尝试设置它: public static void methodOne() {
anArray[0] = 5;
但是,当我尝试运行代码时,得到一个
NullPointerException
,并且消息指定:Sub1.methodOne (Sub1.java:249)
引用此代码:
anArray[0] = 5;
为什么不让我改变数组?如果我将其注释掉,该错误仍然会发生,并且会移至另一行,我尝试更改该数组的索引值。
最佳答案
anArray
是一个static
字段,尝试在该类的构造函数中对其进行初始化没有任何意义。如果希望它为static
,则只需在声明时将其初始化:
public static int[] anArray = new int[15];
如果要让
anArray
和methodOne
成为实例成员,请删除它们的static
修饰符。无论哪种方式,我都建议您将变量设置为
anArray
private
,以便只有公开公开的方法才能修改其内容和final
,这样您就不会意外重新分配它。关于java - 我一直使用公共(public)数组获取NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10669443/