首先,如果這是現有問題的重複,請致歉。我不確定如何說出我的問題,這可能是爲什麼我還沒有找到明確的答案。從本質上講,我想知道如果下面被認爲是很好的做法,或者有更好的方法來做到這一點:是否使用對象實例化作爲枚舉項的值良好實踐?
public enum ExampleEnum {
ENTRY_1(new ExampleCodedValue("entry1", "comment1")),
ENTRY_2(new ExampleCodedValue("entry2", "comment2")),
ENTRY_3(new ExampleCodedValue("entry3", "comment3")),
ENTRY_4(new ExampleCodedValue("entry4", "comment4"));
private ExampleCodedValue codedValue;
ExampleEnum(ExampleCodedValue codedValue) {
this.codedValue = codedValue;
}
public ExampleCodedValue getCodedValue() {
return codedValue;
}
}
class ExampleCodedValue {
private final String code;
private final String comment;
ExampleCodedValue(String code, String comment) {
this.code = code;
this.comment = comment;
}
}
+1吻原則。順便說一句,我通常創建帶有字段的枚舉(像這樣)。他們可以非常方便。 – Bohemian 2012-04-16 01:12:22
主要原因是這個枚舉和其他類似的枚舉使用了'ExampleCodedValue'的通用數據類型。例如,你可能有兩個枚舉,'Settings'和'Attributes'。每個由代碼和評論組成。這是對我的實際用例的過分簡化,但是這兩個枚舉在封裝方面是不同的。我也考慮過使用@Jeffery的例子,並且有一個返回'ExampleCodedValue'類型的訪問器方法。也許這是一個更好的方法來做到這一點? – speedRS 2012-04-16 01:49:04
@speedRS我只是想知道爲什麼你會爲了創建一個沒有提供額外功能的對象而煩惱。但是由於您的用例需要具有該特定對象,因此您的原始示例沒有任何問題。 – Jeffrey 2012-04-16 01:50:22