在Java 程式語言中,使用枚舉作為單例提供了一種便捷的方法來確保只有一個實例存在一個類別。然而,可以採用不同的方法來使用枚舉來實現這種單例模式,從而導致功能和用法略有不同。
<code class="java">public enum Elvis { INSTANCE; private int age; public int getAge() { return age; } }</code>
中透過這種方法,創建了 INSTANCE 字段,有效地定義了 Elvis 枚舉的單例實例。私有建構子限制枚舉定義以外的實例化。要存取實例,可以使用 Elvis.INSTANCE.getAge()。
<code class="java">public enum Elvis { INSTANCE; private int age; public static int getAge() { return INSTANCE.age; } }</code>
這裡,INSTANCE 字段和以前一樣是私有的。但是,我們沒有在枚舉實例上公開 getter,而是提供了公共靜態方法 getAge()。呼叫 Elvis.getAge() 會擷取枚舉實例的年齡屬性。
方法1:
方法2:
將枚舉用作單例的最佳方法取決於特定用例。
一般來說,當功能是獨立的且不需要列舉類別的明確實例時,請考慮使用靜態方法。對於實例的屬性至關重要並且需要直接存取的情況,第一種方法可能更合適。
以上是Java 中的枚舉作為單例:哪種實作最適合您?的詳細內容。更多資訊請關注PHP中文網其他相關文章!