Clone() vs Copy constructor- 在 java 中推荐使用
2022-08-31 07:55:26
克隆方法与Java中的复制构造函数。哪一个是正确的解决方案。在哪里使用每个案例?
克隆方法与Java中的复制构造函数。哪一个是正确的解决方案。在哪里使用每个案例?
克隆已损坏,因此请勿使用它。
Object 类的 CLONE METHOD 是一种有点神奇的方法,它执行了纯 Java 方法无法做到的事情:它生成其对象的相同副本。自 Java 编译器的 Beta 发布以来,它一直存在于原始对象超类中*;它像所有古代魔法一样,需要适当的咒语来防止咒语意外地适得其反。
首选复制对象的方法
Foo copyFoo (Foo foo){
Foo f = new Foo();
//for all properties in FOo
f.set(foo.get());
return f;
}
阅读更多 http://adtmag.com/articles/2000/01/18/effective-javaeffective-cloning.aspx
请记住,这不是开箱即用的。您必须在 中实现并重写方法制作。clone()
Cloneable
clone()
public
有一些替代方案是可取的(因为该方法有很多设计问题,如其他答案所述),并且复制构造函数需要手动工作:clone()
BeanUtils.cloneBean(original)
创建了一个浅克隆,就像 .(这个类来自commons-beanutilsObject.clone()
)
序列化Utils.clone(original)
创建一个深度克隆。(即克隆整个属性图,而不仅仅是第一级)(来自 commons-lang),但所有类都必须实现Serializable
Java 深度克隆库提供深度克隆,无需实现Serializable