日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA之对象的克隆

發布時間:2024/1/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA之对象的克隆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JAVA之對象的克隆

1.為什么要克隆?
①方便,克隆的對象可能包含一些已經修改過的屬性,而new出來的對象的屬性都還是初始化時候的值,所以當需要一個新的對象來保存當前對象的“狀態”使用clone方式很方便;
②速度快,clone方法最終將調用JVM中的原生方法完成復制也就是調用底層的c++代碼,所以一般使用clone方法復制對象要比新建一個對象然后逐一進行元素復制效率要高。

public class text {public static void main(String[] args) {Cat cat =new Cat("x",5);try {Cat newcat=(Cat) cat.clone();//實現cloneSystem.out.println(cat.toString());//輸出原來的System.out.println(newcat);//輸出克隆出來的}catch (CloneNotSupportedException e) {//要捕抓異常并拋出e.printStackTrace();}} }

2.進行克隆的條件
對象需要具備克隆功能:
(1)實現Cloneable接口,(標記接口)
(2)重寫Object類中的clone方法
3.如何實現clone
① 實現Cloneable接口并重寫Object類中的clone()方法;
② 實現Serializable接口,通過對象的序列化和反序列化實現克隆,可以實現真正的深度克隆。對象序列化后寫入流中,再從流中讀取,生成新的對象,新對象和原對象之間也是完全互不影響的。

protected Object clone() throws CloneNotSupportedException {//重寫clone方法return super.clone();}

4.注意
1, clone()不會調用構造方法;new會調用構造方法。
2, new對象時根據類型確定分配內存空間的大小, clone是根據原對象分配內存
3.如果為一個不實現cloneable的類調用clone的話,那么就會拋出一個CloneNotSupportedException異常。相對于實現cloneable接口的類來說,如果為使用默認方法Object.clone的類的實例調用clone的話,就必須采取以下動作之一:
1.在clone的調用周圍包裝一個try代碼塊并捕捉到CloneNotSupportedException異常。
2.將異常CloneNotSupportedException添加到調用clone的方法的throws子句中,拋出這個異常。
以下為

try {Cat newcat=(Cat) cat.clone();System.out.println(cat.toString());System.out.println(newcat);}catch (CloneNotSupportedException e) {e.printStackTrace();

總結

以上是生活随笔為你收集整理的JAVA之对象的克隆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。