乙個物件直接使用=,比如object o1=new object();
object o2=o1;那麼問題是o1改變,o2也會改變。
這時候,需要不隨之前的物件改變而改變,使用clone。
需要注意clone是protect的,所以子類繼承object ,否則丟擲異常
public teacher clone() catch (clonenotsupportedexception e)
return null;
}
就這樣複製成功,不受改變而影響。
但是原來物件一些屬性有些是可變物件,這些物件簡單的clone持引用,還是不可以。
原因在於你複製了物件的引用,這是不行的,如果物件改變,你也會改變。當然string
這種物件,他就是不變,所以他怎麼變都沒有事情,但是其他物件就不行了。
那麼記住,基本型別,string直接物件clone,其他需要在物件clone,其屬性還要繼續clone
public class teacher implements cloneable
}
Object類中clone 方法
使用場景 當我們需要建立乙個物件的副本的時候,並且在改變他們各自的內容的時候互不影響,就可以使用object類中clone 方法 使用clone 方法需要注意 需要實現cloneable介面,否則丟擲clonenotsupportedexception 需要呼叫super.clone 該方法實現 淺...
object 物件中的clone
1.object中的clone執行的時候使用了rtti run time type identification 的機制,動態得找到目前正在呼叫clone方法的那個reference,根據它的大小申請記憶體空間,然後進行bitwise的複製,將該物件的記憶體空間完全複製到新的空間中去,從而達到sha...
Object類中clone 的使用方法
我們先看兩個圖 圖1 圖2由以上兩個圖,我們可以知道,要想使用clone 方法需要先implements cloneable介面 該介面是標記介面,也就意味著必須打上轉殖的標識你才能進行轉殖 再看圖2 object類中方法名前加protected意味著只有其子類才能訪問,其他類訪問需要子類重寫該方法...