Java的深拷貝和淺拷貝(2)

上一篇文章講述了淺拷貝和深拷貝的含義,並且給出了淺拷貝的一個例子

 

這篇文章在那個例子的實現上作出修改,實現深拷貝,代碼如下:

 

 

 

 

該段代碼讓School類(被引用的類)也實現了Cloneable接口,並且也重寫了clone()方法。然後改寫了Student的clone()方法。

 

 

從結果可以看出,學生s2改變其引用的學校的屬性,不會影響到學生s1所屬的學校的屬性,這就是深拷貝的含義。

 

 

 

上面是深拷貝的一個實現。

 

還可以通過序列化來實現對象的深拷貝,一個對象被序列化時會將對象和對象內部引用的其他的對象(遞歸下去)一起序列化

 

一個對象如果想要被序列化,那麼必須實現Serializable接口,這個接口也沒有定義任何方法,也是一個marker interface

 

將前一個例子進行改寫,用序列化的方法實現深拷貝的代碼如下:

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章