2.4.6 為克隆使用序列化
序列化機制有一種很有趣的用法:即提供了一種克隆對象的簡便途徑,只要對應的類是可序列化的即可。其做法很簡單:直接將對象序列化到輸出流中,然后將其讀回。這樣產生的新對象是對現有對象的一個深拷貝(deep copy)。在此過程中,我們不必將對象寫出到文件中,因為可以用ByteArrayOutputStream將數據保存到字節數組中。
正如程序清單2-4所示,要想得到clone方法,只需擴展SerialCloneable類,這樣就完事了。
程序清單2-4 serialClone/SerialCloneTest.java
我們應該當心這個方法,盡管它很靈巧,但是它通常會比顯式地構建新對象并復制或克隆數據域的克隆方法慢得多。