我是Java Enums的新手,我正在尝试实现一个枚举列表,其中每个值都有一些与每个值相关的True / False值。我的枚举列表基本上是这样的:
public enum SomeEnum{
A("A"),
B("B"),
C("C"),
D("D");
private String name;
private SomeEnum(String name){
this.name = name;
}
}
但是,我希望每个枚举值都与其关联“TRUE”或“FALSE”。这有可能与Java枚举?或者我需要在不使用枚举的情况下接近它。最后,我想要一些setter / getter方法来设置和独立获取每个状态。
谢谢!
编辑:很抱歉让我感到困惑,我不清楚我想做什么。我正在为DDS创建一个消息集,并且希望为一组状态消息创建一个消息集,该消息集分别显示TRUE或FALSE并且可以更改。我想我可以使用枚举以某种方式执行此操作,而不是为每个变量创建单独的实例。答案 0 :(得分:3)
简短回答:取决于您的使用案例。有这样的事情是完全合理的:
public enum SomeEnum{
A(true),
B(false),
C(true),
D(false);
private boolean myBool;
private SomeEnum(boolean myBool){
this.myBool = myBool;
}
public boolean geMyBool() {
return myBool;
}
}
请勿使用name
作为字段名称,因为枚举值(String
,A
等名称的B
表示形式)用作Java中所有name
值的enum
。例如,SomeEnum.A.getName()
等于" A"。此功能内置于所有枚举中。
另请注意,如果设置myBool
的值,则会使枚举的用户感到困惑,因为运行时状态将与源代码中的值不一致。
答案 1 :(得分:0)
public enum SomeEnum{
A("A", true),
B("B", false),
C("C", false),
D("D", true);
private String name;
private boolean isImportant;
private SomeEnum(String name, boolean isImportant){
this.name = name;
this.isImportant = isImportant;
}
}
答案 2 :(得分:0)
你接近解决方案,只需在构造函数中添加一个新参数
public enum SomeEnum{
A("A", true),
B("B", false),
C("C", true),
D("D", false);
private String name;
private boolean flag;
private SomeEnum(String name, boolean flag){
this.name = name;
this.flag = flag;
}
}
答案 3 :(得分:0)
答案是肯定的,这很简单。
c[i]
此外,您不需要执行名称变量,因为枚举已经有一个名为 public enum SomeEnum{
A(true),
B(false),
C(true),
D(false);
private boolean flag;
private SomeEnum(boolean flag){
this.flag = flag;
}
public boolean getFlag() {
return flag;
}
}
的方法,它返回一个表示实例名称的String。如果你想要String是dfferent只是覆盖方法name()
并使用它来获取一个与你的枚举实例名称不同的String