0

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

像这样的东西

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

我从 main 调用这个方法

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

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

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

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

4

1 回答 1

3

这就是正在发生的事情

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

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

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

可能的修复:初始化codeZerocodeOne初始化之前tabletable然后,使用您当前的方法进行初始化:

    codeZero = new Object[2];
    codeOne = new Object[2];
    table = new Object[][] { codeZero, codeOne }
于 2013-10-12T18:02:00.870 回答