转载自https://www.jianshu.com/p/ea8f7b1fbbb1
1. Cloneable的用途
Cloneable是标记型的接口,它们内部都没有方法和属性,实现 Cloneable来表示该对象能被克隆,能使用Object.clone()方法。如果没有实现 Cloneable的类对象调用clone()就会抛出CloneNotSupportedException。
2. 克隆的分类
-
浅克隆(shallow clone),浅克隆是指拷贝对象时仅仅copy对象本身和对象中的基本变量,而不拷贝对象包含的引用指向的对象。
-
深克隆(deep clone),不仅copy对象本身,而且copy对象包含的引用指向的所有对象。
举例:对象X中包含对Y的引用,Y中包含对Z的引用。浅拷贝X得到X1,X1中依然包含对Y的引用,Y中依然包含对Z的引用。深拷贝则是对浅拷贝的递归,深拷贝X得到X1,X1中包含对Y1(Y的copy)的引用,Y1中包含对Z1(Z的copy)的引用。
3. 克隆代码举例
要让对象可以被克隆,应具备以下2个条件:
-
让该类实现java.lang.Cloneable接口;
-
重写(Override)Object的clone()方法;
具体写法是在重写clone方法时候,类调用父类的clone(),其中成员变量是引用对象的,调用自身的clone()方法,并将值set入类的clone对象内。
标签:克隆,对象,clone,引用,Cloneable,使用,copy,方法 From: https://www.cnblogs.com/czfblog-01/p/16783488.html