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,该类的构造函数初始化object1和object2.
objects据我所知,包含对这些对象的引用.所以在他们初始化之后,我期待任何东西,但是无效.
有人能解释一下吗 谢谢.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
即初始化object后初始化object1,object2你将在数组中有非空的副本.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |