2012-11-19 39 views
1

有沒有人有什麼優越,EnumMapProperties的想法我使用的是第三方軟件包,使用他們的方法,像這樣我的代碼和他們的應用程序之間的通信(在我的情況,或至少):EnumMap的VS屬性

TheirRuntime.getInstance().getParameter(String paramName) 

目前,我已經創建了一個enum認爲是這樣的:

public enum MyEnum { 
    FOO_BAR ("fooBar"), BAZ_QUUX ("bazQuux"); 

    private final String varName; 
    private MyEnum(String varName) { 
     this.varName = varName(); 
    } 
    public String varName() { 
     return varName(); 
    } 
} 

然後我的值存儲在一個EnumMap<MyEnum, Double>,當用戶改變一些東西,得到更新。我的架構比這個稍微複雜一些,但我爲了SSCCE而省略了一些細節。雖然我會提到我的東西,如加載值:

for (MyEnum me : MyEnum.values()) { 
    TheirRuntime.getInstance().getParameter(me.varName()); 
} 

什麼我不知道,它會更有意義使用Properties?這個問題已經出現了,因爲我試圖構建一個根本不涉及第三方軟件的測試框架,並且我試圖找出一個好的,簡單的方法來加載不使用任何3rd的參數第三方API調用,以及Properties文件似乎是一個簡單的方法,這讓我想知道我是否應該在主類中使用Properties

想法?

回答

1


枚舉的好處是明確的:
它爲您提供了枚舉文字。您可以使用它們在編譯級別捕捉「錯誤的關鍵」問題。
屬性允許您靈活 - 例如 - 您可以從文件中讀取它們。
最大的問題是 - 你有多確定由enum提供的文字集是固定的,並且不會改變?
例如,我們的系統有一組枚舉值,因爲我們是一個開源項目,所以我們希望在其上創建一個插件,理論上應該使用枚舉值
但插件編寫者會不能使用原始枚舉,因爲它有一組固定的文字,所以要麼我們將枚舉修改爲屬性對象,並讓插件編寫者註冊它們的「文字」,或者我們必須提供一個補充系統我們的枚舉。
對不起,我沒有「清除」解決方案。

1

使用EnumMap和普通屬性(也是引擎蓋下的Map)之間的主要區別在於前者將強制允許存儲在給定映射中的鍵的值,而屬性將允許使用任何這些鍵的字符串。