首先,如果这是现有问题的重复,请致歉。我不确定如何说出我的问题,这可能是为什么我还没有找到明确的答案。从本质上讲,我想知道如果下面被认为是很好的做法,或者有更好的方法来做到这一点:是否使用对象实例化作为枚举项的值良好实践?
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