1. 程式人生 > >序列化與對象克隆

序列化與對象克隆

ans 克隆 沒有 ali 類的屬性 ble 實例 編寫 接口

  • 實例說明

  對於深克隆而言,如果類有很多引用類型的屬性,那麽重寫clone()方法依次復制各個屬性是非常麻煩的。

  • 關鍵技術

  序列化可以將任意對象寫入到流中。根據流的類型不同,可以將對象寫入到文件中,也可以將對象寫入到字節數組中。克隆對象時一般不需要先進行保存,因此將使用字節數組。在寫入完成後,再將其讀出就可以實現克隆。使用序列化可以不用考慮引用類型的屬性,編寫clone()方法相對簡單,但是要求引用類型也實現Serializable接口。

註意:如果使用了API中的類並且該類沒有實現Serializable接口,則該屬性需要使用transient修飾。

註意事項

  對於任何一個序列化對象,都要求其實現Serializabled接口。如果該類的屬性中有引用類型,則要求該引用類型也實現Serializable接口,以此類推。最後序列化方式實現克隆會比直接克隆各個引用類型慢,這一點在效率優先時要考慮。

序列化與對象克隆