改變這個問題已經太晚了,但更確切地說,會問「爲什麼clone()不允許singleton?」。 A copy()
方法會更方便。爲什麼Java枚舉不可克隆?
爲什麼Java中的枚舉不能被克隆?
手冊表明
這保證永遠不會複製枚舉,這是必要的維護自己的「單身」狀態。
但是,返回實例本身也會保留其狀態,我可以像處理其他可克隆對象一樣處理關聯的枚舉。
可能有人會認爲
總的意圖[克隆的()]是,對於任何對象x,表達式:
x.clone() != x
將爲真,[...]
但是對於單身人士而言,我希望x.clone() == x
爲真。如果實例本身將被返回,那麼singleton模式對於引用對象是透明的。
那麼爲什麼enums不允許被克隆,或者當clone()
被指定時,他們忘記考慮單身人士和不可變的東西?
使用枚舉,有什麼可克隆的? – omerkudat 2009-11-26 13:05:43