【发布时间】:2021-03-30 09:25:27
【问题描述】:
在java中,数组初始化中的对象引用是如何工作的?
例如,这很好用:
SomeObject object1;
SomeObject object2;
// ***
object1 = new SomeObject();
object2 = new SomeObject();
SomeObject[] objects = {object1, object2};
// processing objects
但是,如果我将数组初始化放在“***”标记处,我稍后会在处理数组元素时收到 NullPointerException。为什么?数组已经包含对象引用,为什么我在初始化数组之前或之后初始化所述对象?
【问题讨论】:
-
当您说
SomeObject[] objects = {object1, object2};时,您是在说objects[0] 与object1 指向同一个Object。如果 object1 为 null,则即使您稍后更改 object1,objects[0] 也为 null。