我对使用Java实现clone()进行了快速的搜索,发现:http : //www.javapractices.com/topic/TopicAction.do?Id=71
它具有以下注释:
复制构造函数和静态工厂方法提供了克隆的替代方法,并且易于实现。
我要做的只是制作一个深层副本。实现clone()似乎很有意义,但是这篇在Google上排名很高的文章使我有些害怕。
这是我注意到的问题:
复制构造函数不适用于泛型。
这是一些不会编译的伪代码。
public class MyClass<T>{
..
public void copyData(T data){
T copy=new T(data);//This isn't going to work.
}
..
}
示例1:在泛型类中使用复制构造函数。
工厂方法没有标准名称。
有一个可重用代码的接口是非常好的。
public class MyClass<T>{
..
public void copyData(T data){
T copy=data.clone();//Throws an exception if the input was not cloneable
}
..
}
示例2:在泛型类中使用clone()。
我注意到克隆不是静态方法,但是否仍需要对所有受保护字段进行深拷贝?在实现clone()时,在非克隆子类中引发异常的额外工作对我而言似乎微不足道。
我想念什么吗?任何见解将不胜感激。