Clone() vs Copy constructor- 在 java 中推荐使用

2022-08-31 07:55:26

克隆方法与Java中的复制构造函数。哪一个是正确的解决方案。在哪里使用每个案例?


答案 1

克隆已损坏,因此请勿使用它。

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


答案 2

请记住,这不是开箱即用的。您必须在 中实现并重写方法制作。clone()Cloneableclone()public

有一些替代方案是可取的(因为该方法有很多设计问题,如其他答案所述),并且复制构造函数需要手动工作:clone()