我对在 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 不是一个静态方法,但是是否仍然需要对所有受保护的字段进行深度拷贝?在实现 clone ()时,在不可克隆的子类中抛出异常的额外工作对我来说似乎微不足道。
我是不是错过了什么? 如果你能提供点有用的信息,我会很感激的。