亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

java 克隆clone學習

系統 1777 0

文章參考 :http://www.java3z.com/cwbwebhome/article/article8/81145.html?id=2600

?

Java Object類 提供了一個 protected 修飾的clone()方法,該方法用于幫助其他對象來實現“自我克隆”,所謂“自我克隆”就是得到一個當前對象的副本,而且兩者之間完全隔離, 該方法只能被子類重寫或調用

?

自定義類實現“克隆”的步驟:

1、自定義類實現Cloneable接口;(這是個 標記性接口 ,實現該接口對象可以實現“自我克隆”,接口里沒有定義任何方法,否則不能執行clone方法)

2、自定義類實現自己的clone()方法

3、實現clone()方法時通過super.clone();調用Object實現的clone()方法來得到該對象的副本,并返回該副本。

?

備注: 標記性接口是沒有任何方法和屬性的接口。它僅僅表明他的類屬于一個特定的類型,供其他代碼來測試允許做一些事情。使用標記性接口的唯一目的是使得可以用instanceof進行類型查詢 ,例如:

if(obj instanceof Cloneable){......}

一些容器例如EJB容器,servlet容器或運行環境依賴標記接口識別類是否需要進行某種處理,例如serialiable接口標記類需要進行序列化操作。

?

?

      package hb.com.clone;

class Address{
	String detail;
	public Address(String detail){
		this.detail = detail;
	}
	
	public String getDetail() {
		return detail;
	}

	public void setDetail(String detail) {
		this.detail = detail;
	}

	public String print(){
		System.out.println(this.detail);
		return this.detail;
	}
	
}

    

?

      package hb.com.clone;

public class User implements Cloneable{
	 
	public int age;
	public Address address;
	public User(int age){
		this.age = age;
		this.address = new Address("地名");
	}
	 
	public User clone(){
		try {
			return (User)super.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		return null;
	}
}
    

?

      public class CloneTest {
 
	public static void main(String[] args) {
	User u1 = new User(29);  
        //u1克隆之后,會單獨開辟一塊內存空間,u2指向的地址與u1不一致
//      x.clone() != x 
//		x.clone().getClass() == x.getClass() 
//		x.clone().equals(x) 
        User u2 = u1.clone();  
        System.out.println(u1==u2);  //false
        
//		primitive的確做到了相等且隔離。 
//		引用類型僅僅是復制了一下引用
        System.out.println(u1.address ==u2.address);  //true
           
        //值相等,實際上內存不是指向同一個位置
        System.out.println(u1.age == u2.age); 
        
        System.out.println(u1.address.print());
        u1.address.setDetail("地名1");
        System.out.println(u1.address.print());
        System.out.println(u2.address.print());
	}
 
}
    

? java 克隆clone學習

?

Object類的clone()方法雖然簡單、易用,但它只是一種“ 潛克隆 ”—— 它只克隆該對象的所有Field值,不會對引用類型的Field值所引用的對象克隆 。如果需要“ 深克隆 ”,則需要開發者自己進行“遞歸”克隆,保證所有引用類型的Field值所引用的對象都被復制了。

java 克隆clone學習


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 9re视频这里只有精品 | 亚洲精品动漫一区二区三区在线 | 综合网在线观看 | 夜间福利在线观看 | 蕾丝视频永久在线入口香蕉 | 视频1区| www.精品视频| 久久综合亚洲 | 日本香蕉网 | 幸福宝色多多 | 久久精品国产三级不卡 | 国产成人综合网 | 99久久精品国产片久人 | 国内精品一区二区 | 国产亚洲精品美女2020久久 | 四虎成人精品在永久在线观看 | 国产精品久久久久久一区二区 | 国产一区二区精品久 | 亚洲成网站www久久九 | 亚洲精品美女久久久久99 | 国产精品一区二区欧美视频 | 青娱乐国产在线视频 | 极品吹潮视频大喷潮tv | 久久久小视频 | 国产精品视频一区二区三区不卡 | 97影院九七理论片男女高清 | 99精品久久久久久久免费看蜜月 | 美女黄频 | 欧美日本亚洲国产一区二区 | 一级a毛片免费观看久久精品 | 深夜福利视频网址 | 在线观看男女爱视频网站 | 911精品国产亚洲日本美国韩国 | se色成人亚洲综合 | 99999久久久久久亚洲 | 亚洲视频手机在线 | 日本一二区视频 | 91亚洲国产| 久久4| 色偷偷亚洲精品一区 | 香港aa三级久久三级不卡 |