为什么要使用克隆?
克隆的对象可能包含一些已经修改过的属性,而 new 出来对象的属性还是初始化的值,因此当需要修改一个新对象来保存当前对象的“状态”便是克隆了。
怎样实现对象克隆?
- 实现 Cloneable 接口并重写 Object 类中的 clone() 方法。
- 实现 Serializable 接口,通过对象的序列化与反序列化实现克隆,这样能真正实现深度克隆。
浅拷贝和深拷贝的区别是什么?
前者当对象别复制时,只是复制它本身和其中包含的值类型的成员变量,但引用类型的成员对象没有被复制;
后者是除了对象本身被复制外,对象所包括的所有成员变量也将被复制。