浅拷贝是指对象的“拷贝”,无论是原始值还是参考值,其属性值都相同。
在执行浅拷贝时是否有必要“创建一个新实例”?作为:
public class A {
int aValue;
B bObj;
...
public A createShallow(A a1Obj) {
A aObj = new A();
aObj.aValue = a1Obj.aValue;
aObj.bObj = a1Obj.bObj;
return aObj;
}
}
或者赋值复制也被认为是浅拷贝:
B b = new B(10);
A a = new A(1, b);
A a1 = a;
维基百科上的这篇文章将浅拷贝定义为共享相同内存块的引用变量。所以按这个copy by assignment也会是浅拷贝。
但它不是指向同一对象的变量而不是 Object 的“副本”吗?