我有这样的东西:
public class Test {
public static MyObject o4All = null;
public MyObject o4This = null;
public void initialize() {
// create an instance of MyObject by constructor
this.o4This = new MyObject(/* ... */);
// this works, but I am wondering
// how o4All is internally created (call by value/reference?)
Test.o4All = this.o4This;
}
}
我知道,我只能通过静态方法来分配或更改静态变量。但是根据java-docs(http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html),我可以使用对象引用。
类方法无法访问实例变量或实例方法
直接-他们必须使用对象引用。
如果我更改o4This的属性怎么办? o4All的属性是否也将被间接更改?
最佳答案
如果我更改o4This的属性怎么办? o4All的属性也会
被间接改变?
是,它将被更改。因为现在,o4All
和o4This
都引用相同的实例。您是通过以下任务完成的:-
Test.o4All = this.o4This;
在上面的分配中,您并没有创建
o4This
所引用实例的副本,而是仅在o4This
参考中复制了o4All
的值。现在,由于o4This
值是对instance
的引用。因此,o4All
现在引用了与o4This
相同的实例。因此,您使用引用对instance
所做的任何更改也将反映在另一个引用中。