设置后,Java数组引用为null

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");
    }
}

这输出:

null
null

为什么?

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

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

有人能解释一下吗谢谢.

object不包含对这些object1和object2的引用,但包含对这些对象的复制引用.

如果你这样做:

public static Object[] objects;

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

    objects = { object1, object2 };
    for (Object o : objects) {
        System.out.println(o);
    }
}

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

相关文章
相关标签/搜索