我正在尝试创建静态数组,稍后在该方法中初始化该数组
像这样的东西
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]时,它给了我一个空指针异常
这就是问题
所在使用
null
元素实例化table
变量:table = new Object[][] { codeZero, codeOne };
更改
codeZero
和codeOne
变量的引用,旧的引用仍将保留在table
中,它们不会被替换。codeZero = new Object[2]; codeOne = new Object[2];
由于旧的
null
引用仍在table
中,因此在调用table[0][<whatever>]
时会得到NullPointerException
。
可能的解决方法:在初始化table
之前初始化codeZero
并codeOne
。然后,使用当前方法初始化table
:
codeZero = new Object[2];
codeOne = new Object[2];
table = new Object[][] { codeZero, codeOne }