对象克隆的优点:
- 无需编写冗长且重复的代码。只需使用带有 4 行或 5 行长的
clone()
方法的抽象类。 - 这是复制对象的最简单和最有效的方法,尤其是当将其应用于已开发或旧项目时。 只需定义一个父类,在其中实现 Cloneable,提供
clone()
方法的定义,任务就完成了。 clone()
方法是复制数组的最快方法。
对象克隆的缺点:
- 要使用
Object.clone()
方法,必须在代码中更改许多语法,例如实现 Cloneable 接口、定义clone()
方法和处理CloneNotSupportedException
,最后调用Object.clone()
等。 - 必须实现 Cloneable 接口,而它没有任何方法。 必须使用它来告诉 JVM 可以对我们的对象执行
clone()
。 Object.clone()
是受保护的,所以必须提供自己的clone()
并从中间接调用Object.clone()
。Object.clone()
不调用任何构造函数,因此无法控制对象构造。- 如果要在子类中编写
clone
方法,则其所有超类都应在其中定义clone()
方法或从另一个父类继承该方法。 否则,super.clone()
链将失败。 Object.clone()
仅支持浅拷贝,但如果需要深度克隆,将需要覆盖它。