轉殖,深轉殖和淺轉殖

2021-09-27 07:41:11 字數 558 閱讀 6126

轉殖,深轉殖和淺轉殖

1.實現轉殖,繼承cloneable介面,實現clone();beanutils.clonebean(origin);

2.深轉殖和淺轉殖的區別,

淺轉殖指的是轉殖的時候僅僅轉殖物件本身(物件的基本變數),而不拷貝物件的引用變數。

深轉殖指的是轉殖的時候不僅轉殖物件本身,而且拷貝物件包含的引用指向的物件。

3.深轉殖的實現方式

方式一:逐層實現轉殖

方式二:序列化實現,在序列化和反序列化後,物件被深度拷貝

物件序列化不僅能儲存物件的副本,而且會跟著物件中的reference把它所引用的物件也儲存起來,然後再繼續跟蹤那些物件的reference,以此類推。這種情形常被稱作」單個物件所聯結的『物件網』 「。

但是序列化卻很耗時

深轉殖和淺轉殖

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

淺轉殖和深轉殖

1淺轉殖 shallow copy 是通過呼叫object的clone方法,建立出和原物件 結構相同的新物件。淺轉殖 和深轉殖 deep copy 不同,如果被拷貝的物件屬性為可變類,則直接複製該引用物件的位址。這會導致,淺轉殖出來的物件 如果改變可變類屬性值,則原物件的可變類屬性值也會一起變。換句...

深轉殖和淺轉殖

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