二维阵列中的静态一维数组的问题



我正在尝试创建静态数组,稍后在该方法中初始化该数组

像这样的东西

static Object[][] table;
static Object[] codeZero;
static Object[] codeOne;

我从主调用此方法

static void init(){
    table = new Object[][]{codeZero,codeOne};
}

然后在另一种方法中,我尝试这样的事情

codeZero=new Object[2];
codeOne=new Object[2];
table[0][0]= new Integer(4);

当我尝试打印表[0][0]时,它给了我一个空指针异常

这就是问题

所在
  1. 使用null元素实例化table变量:

    table = new Object[][] { codeZero, codeOne };
    
  2. 更改codeZerocodeOne变量的引用,旧的引用仍将保留在table中,它们不会被替换。

    codeZero = new Object[2];
    codeOne = new Object[2];
    
  3. 由于旧的null引用仍在table中,因此在调用table[0][<whatever>]时会得到NullPointerException

可能的解决方法:在初始化table之前初始化codeZerocodeOne。然后,使用当前方法初始化table

    codeZero = new Object[2];
    codeOne = new Object[2];
    table = new Object[][] { codeZero, codeOne }

最新更新