将独立状态设置为Java枚举值

时间:2016-11-14 13:24:02

标签: java enums

我是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并且可以更改。我想我可以使用枚举以某种方式执行此操作,而不是为每个变量创建单独的实例。

4 个答案:

答案 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作为字段名称,因为枚举值(StringA等名称的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