淺轉殖和深轉殖

2021-09-13 19:20:22 字數 538 閱讀 5281

1淺轉殖(shallow copy)是通過呼叫object的clone方法,建立出和原物件 結構相同的新物件。 淺轉殖 和深轉殖(deep copy)不同,如果被拷貝的物件屬性為可變類,則直接複製該引用物件的位址。

這會導致,淺轉殖出來的物件 如果改變可變類屬性值,則原物件的可變類屬性值也會一起變。換句話說,如果屬性值string、integer等不可變類,則並不會一同改變

2呼叫 object的clone方法,必須實現cloneable ,否則會丟擲 clonenotsupportedexception。故淺轉殖物件必須實現cloneable介面

3呼叫轉殖方法,並不會呼叫構造器

4實現深轉殖有兩種方法

1)是將所有可變類屬性都重寫clone方法實現cloneable介面,並將原 可變類屬性值 淺轉殖後賦給 淺轉殖出來的物件

但問題是,如果可變類屬性值 的類 中有 可變類屬性值 ,那麼**會非常繁瑣

2)為了解決這個問題,可以通過序列化,實現深轉殖

轉殖,深轉殖和淺轉殖

轉殖,深轉殖和淺轉殖。1.實現轉殖,繼承cloneable介面,實現clone beanutils.clonebean origin 2.深轉殖和淺轉殖的區別,淺轉殖指的是轉殖的時候僅僅轉殖物件本身 物件的基本變數 而不拷貝物件的引用變數。深轉殖指的是轉殖的時候不僅轉殖物件本身,而且拷貝物件包含的引...

深轉殖和淺轉殖

為什麼需要轉殖?new出來的物件中的屬性都是初始化時候的值,當需要乙個新的物件來儲存當前物件的 狀態 就靠clone方法了。直接使用object a new object object b b a不行嗎,答案是不行的。因為這只是轉殖了引用。如何實現轉殖?首先由兩種轉殖的方式,乙個是深轉殖,乙個是淺轉...

深轉殖和淺轉殖

function anotherfunction var anotherobject var anotherarray var myobject anotherarray.push anotherobject,myobject 首先,我們應該判斷它是淺複製還是深複製。對於淺拷貝來說,複製出的新物件中...