2010-05-25 126 views
2

我讀了設在這裏枚舉的Java教程,有一個問題:http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html#Card問題有關singleton屬性

我感到困惑的是如下部分:

「的卡類,以上,含有 靜態的工廠,返回甲板, 但沒有辦法從它的等級和 西裝得到 個人卡。僅僅暴露構造 會破壞singleton屬性 (只有單個實例每張卡片允許存在)。下面是如何 寫一個靜態工廠 保留singleton屬性, 使用嵌套EnumMap的:「

現在我明白了,改變了原來的私人‘一卡通’構造公共將使我們能夠實例化無限數量的具有給定花色+等級的「卡」對象的副本。所提出的解決方案是創建EnumMap,其將存儲四個地圖(每個套裝一個),它們本身包含13個以等級作爲其鍵的卡對象

所以現在如果你想從卡組中檢索一個特定的卡對象,你只需調用「valueOf」方法。現在我的問題是,什麼是防止你隨意多次調用valueOf方法?這不會導致公開原始私有構造函數的相同問題嗎?

謝謝。

回答

1

No. valueOf()將始終返回相同的實例。注意,它實際上是在static塊中實例化一次。