天天看點

java.lang.Cloneable

public interface Cloneable

此類實作了 Cloneable 接口,以訓示 Object.clone() 方法可以合法地對該類執行個體進行按字段複制。

如果在沒有實作 Cloneable 接口的執行個體上調用 Object 的 clone 方法,則會導緻抛出 CloneNotSupportedException 異常。

按照慣例,實作此接口的類應該使用公共方法重寫 Object.clone(它是受保護的)。請參閱 Object.clone(),以獲得有關重寫此方法的詳細資訊。

注意,此接口不包含 clone 方法。是以,因為某個對象實作了此接口就克隆它是不可能的。即使 clone 方法是反射性調用的,也無法保證它将獲得成功。

上面的話來自Java Doc,從這段話可以得出2個結論:

必須實作Cloneable接口才有資格調用Object.clone()方法

實作Cloneable接口隻是可克隆的條件之一,要可克隆,還必須改寫 Object 的clone()方法,因為Object.clone()方法是protected的,必須進行覆寫并改為public。

其它注意事項:如果需要克隆的類引用到了其它的類的對象,甚至這個對象也引用到了别的對象,那麼在必要情況下,你需要将這個對象樹進行完整的克隆。