我看到可以通过这些方式创建简单的枚举
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;
}
}
在第一种情况下,我可以使用MyEnum1.FOO.name()
,而在第二种情况下,我可以使用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;
}
}
答案 1 :(得分:0)
我说这取决于用例。我同意杰里米的看法,第一种方法看起来更好,更清洁。但是,如果其他一些代码依赖于枚举名称,那么我使用第二种方法,因为在第一种方法中,重构枚举会破坏你的应用程序。但如果您只想在某处打印名称,请使用第一个。