我做了一个快速google上实现clone()在Java中,发现:
http://www.javapractices.com/topic/TopicAction.do?Id=71
它有以下评论:
copy constructors and static factory methods provide an alternative to clone, and are much easier to implement.
所有我想做的是做一个深的副本。实现clone()似乎有很大的意义,但这个高度google排名的文章使我有点害怕。
这里是我注意到的问题:
复制构造函数不适用于泛型。
这里有一些伪代码,无法编译。
public class MyClass{
..
public void copyData(T data){
T copy=new T(data);//This isn't going to work.
}
..
}
示例1:在通用类中使用复制构造函数。
工厂方法没有标准名称。
有一个可重用的代码的接口是相当不错。
public class MyClass{
..
public void copyData(T data){
T copy=data.clone();//Throws an exception if the input was not cloneable
}
..
}
示例2:在通用类中使用clone()。
我注意到克隆不是一个静态方法,但是仍然有必要制作所有受保护字段的深层副本?当实现clone()时,在非可克隆子类中抛出异常的额外努力对我来说似乎微不足道。
我缺少什么?任何见解都将不胜感激。