JAVA之对象的克隆
JAVA之對象的克隆
1.為什么要克隆?
①方便,克隆的對象可能包含一些已經修改過的屬性,而new出來的對象的屬性都還是初始化時候的值,所以當需要一個新的對象來保存當前對象的“狀態”使用clone方式很方便;
②速度快,clone方法最終將調用JVM中的原生方法完成復制也就是調用底層的c++代碼,所以一般使用clone方法復制對象要比新建一個對象然后逐一進行元素復制效率要高。
2.進行克隆的條件
對象需要具備克隆功能:
(1)實現Cloneable接口,(標記接口)
(2)重寫Object類中的clone方法
3.如何實現clone
① 實現Cloneable接口并重寫Object類中的clone()方法;
② 實現Serializable接口,通過對象的序列化和反序列化實現克隆,可以實現真正的深度克隆。對象序列化后寫入流中,再從流中讀取,生成新的對象,新對象和原對象之間也是完全互不影響的。
4.注意
1, clone()不會調用構造方法;new會調用構造方法。
2, new對象時根據類型確定分配內存空間的大小, clone是根據原對象分配內存
3.如果為一個不實現cloneable的類調用clone的話,那么就會拋出一個CloneNotSupportedException異常。相對于實現cloneable接口的類來說,如果為使用默認方法Object.clone的類的實例調用clone的話,就必須采取以下動作之一:
1.在clone的調用周圍包裝一個try代碼塊并捕捉到CloneNotSupportedException異常。
2.將異常CloneNotSupportedException添加到調用clone的方法的throws子句中,拋出這個異常。
以下為
總結
以上是生活随笔為你收集整理的JAVA之对象的克隆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发现了clickhouse的小彩蛋
- 下一篇: 深入浅出JVM调优,看完你就懂