设置后,Java数组引用为null

Jos*_*osh 4 java

public abstract class Class1 {
    protected static Object object1 = null;
    protected static Object object2 = null;

    public static Object[] objects = { object1, object2 };

    public static void main(String[] args) {
        new Class2();

        for (Object o : objects) {
            System.out.println(o);
        }
    }
}

public class Class2 extends Class1 {
    public Class2() {
        Class1.object1 = new String("String 1");
        Class1.object2 = new String("String 2");
    }
}
Run Code Online (Sandbox Code Playgroud)

这输出:

null
null
Run Code Online (Sandbox Code Playgroud)

为什么?

当我创建一个新实例时Class2,该类的构造函数初始化object1object2.

objects据我所知,包含对这些对象的引用.所以在他们初始化之后,我期待任何东西,但是无效.

有人能解释一下吗 谢谢.

Kon*_*kov 5

object不包含这些引用object1object2,但包含复制引用这些对象.

如果你这样做:

public static Object[] objects;

public static void main(String[] args) {
    new Class2();

    objects = { object1, object2 };
    for (Object o : objects) {
        System.out.println(o);
    }
}
Run Code Online (Sandbox Code Playgroud)

即初始化object后初始化object1,object2你将在数组中有非空的副本.