我有两个类:MainSub1

anArraySub1中声明如下:

  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];


如果要让anArraymethodOne成为实例成员,请删除它们的static修饰符。

无论哪种方式,我都建议您将变量设置为anArray private,以便只有公开公开的方法才能修改其内容和final,这样您就不会意外重新分配它。

关于java - 我一直使用公共(public)数组获取NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10669443/

10-09 03:20