一個專家級程序員
從來都不會去改寫clone方法
也從來不去調用它
除非是為了低開銷來拷貝一個數組
一個為了繼承而設計的類
如果未能實現一個行為良好的protected的clone方法
它的子類要實現cloneable接口是不可能的
真的要做
如何實現改寫clone方法呢?
所有實現了cloneable接口的類都應該用一個公有的方法改寫clone
這個方法要首先調用super
clone
如果所有的類都實現這麼做
那麼最終就會回溯到object的clone方法
不會得到clone得到不對的對象的情況
調用super
clone之後
把所有復雜對象設成初始狀態
原始類型數據可以直接復制
通常情況下
此時還需要對內部的任何可變對象(比如堆棧
鏈表)進行深層結構的拷貝
不能簡單的復制
比如
A實例有一個堆棧Stack
調用A的clone方法
如果僅僅是令B的Stack=A的stack
那麼修改A的stack同時會影響到B中stack的情況
所以
我們必須進行深層拷貝
防止這個問題
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25437.html