天天看點

JAVA系列: Clone淺拷貝、深拷貝

目錄

淺複制

深複制

深拷貝工具類SerializationUtils.clone

  淺層複制: 被複制的對象的所有成員屬性都有與原來的對象相同的值,而所有的對其他對象的引用仍然指向原來的對象。

換言之,淺層複制僅僅複制所考慮的對象(對象屬性、資料),而不複制它所引用的對象(對象位址)。

  深層複制:被複制對象的所有變量都含有與原來的對象相同的值,除去那些引用其他對象的變量。那些引用其他對象的變量将指向被複制過的新對象,而不是原有的那些被引用的對象。

換言之,深層複制要複制的對象引用的對象(對象屬性、資料)都複制一遍。

JAVA系列: Clone淺拷貝、深拷貝

深拷貝實作起來也比較簡單,隻需要對對象中的對象再次進行clone操作:

commons-lang-2.6.jar 例如:Object obj = SerializationUtils.clone( objectFrom )