2016-02-15 53 views
0

我看到簡單枚舉可以通過這些方式創建什麼是創建一個簡單的Java枚舉的最佳方式表示一個常數組字符串

public enum MyEnum1 { 
    FOO, 
    BAR; 
} 

public enum MyEnum2 { 
    FOO("FOO"), 
    BAR("BAR"); 

    private final String value; 

    private MyEnum2(String value) { 
     this.value = value; 
    } 

    public String value() { 
     return value; 
    } 
} 

在第一種情況下,我可以在第二次使用​​而我可以使用MyEnum2.FOO.value()來達到我的目的。我想知道什麼是最好的方法,當我只想讓枚舉表示一些常量字符串。

使用上面的枚舉有什麼優點/缺點?在哪種情況下哪個應該是首選?使用name()方法有什麼缺點嗎?

回答

0

我想說這取決於用例。我同意傑里米的觀點,第一種方法看起來更好,更清潔。但是,如果其他代碼依賴於枚舉名稱,比我使用第二種方法,因爲在第一種方法中,重構枚舉會破壞您的應用程序。但是,如果您只想在某處打印該名稱,請使用第一個。

1

第一個解決方案將爲您工作。第二個解決方案,如果你想額外的信息添加到枚舉:

public enum MyEnum2 { 
FOO("This is the first", 867), 
BAR("This is the second", 885); 

private final String description; 
private final Integer weight; 

private MyEnum2(String description, Integer weight) { 
    this.description = description; 
    this.weight = weight 
} 

public String getDescription() { 
    return description; 
} 

public Integer getWeight() { 
    return weight; 
} 

}

相關問題