Object.clone() 完成的逐个字段复制是什么?
在 Effective Java 中,作者指出:
如果一个类实现了 Cloneable,则 Object 的 clone 方法将返回该对象的逐个字段副本;否则,它会抛出 CloneNotSupportedException。
我想知道的是他对逐个字段复制的含义。这是否意味着如果类在内存中有X字节,它将只复制该内存?如果是,那么我是否可以假设原始类的所有值类型都将复制到新对象?
class Point implements Cloneable{
private int x;
private int y;
@Override
public Point clone() {
return (Point)super.clone();
}
}
如果所做的是类的逐个字段副本,我会说我不需要显式复制字段,因为上面显示的代码将足以克隆该类。也就是说,以下代码位是多余的:Object.clone()
Point
x
y
Point
@Override
public Point clone() {
Point newObj = (Point)super.clone();
newObj.x = this.x; //redundant
newObj.y = this.y; //redundant
}
我说的对吗?
我知道克隆对象的引用会自动指向原始对象的引用指向的位置,我只是不确定值类型具体发生了什么。如果有人能清楚地说明算法规范是什么(用简单的语言),那就太好了。Object.clone()