如何在java中制作像枚举一样的键值

新手上路,请多包涵

我需要制作一个 Enum 包含一些带空格的字符串及其在 int 中的值,例如:

 public enum status{
Active(1),
Inactive(2);
}

因为我将它与休眠一起使用,并且还将它转换为 JSON 以用于羊驼 js 表单。

喜欢:

 [{"text": "Inactive", "value":"2"},{"text": "Active", "value":"1"}]

我一直在制作 enum 。如何制作这种类型的 enum

原文由 Saqib Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 492
2 个回答

您不能在字符串之间放置空格。您可以使用下划线代替,如下所示:

 In_Active

您可以使用这种方式:

 enum Status {

    ACTIVE("Active", 1), IN_ACTIVE("In Active", 2);

    private final String key;
    private final Integer value;

    Status(String key, Integer value) {
        this.key = key;
        this.value = value;
    }

    public String getKey() {
        return key;
    }
    public Integer getValue() {
        return value;
    }
}

原文由 Chandana Kumara 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以将多个值保存在一个 enum 中,甚至可以使用吸气剂来处理它们。这是我曾经使用过的一个例子(我试着让它适应你的问题):

 public enum Status{

    ACTIVE(1, "Active"),
    INACTIVE(2, "In Active");

    private final Integer value;
    private final String text;

    /**
     * A mapping between the integer code and its corresponding text to facilitate lookup by code.
     */
    private static Map<Integer, Status> valueToTextMapping;

    private Status(Integer value, String text){
        this.value = value;
        this.text = text;
    }

    public static Status getStatus(Integer i){
        if(valueToTextMapping == null){
            initMapping();
        }
        return valueToTextMapping.get(i);
    }

    private static void initMapping(){
        valueToTextMapping = new HashMap<>();
        for(Status s : values()){
            valueToTextMapping.put(s.value, s);
        }
    }

    public Integer getValue(){
        return value;
    }

    public String getText(){
        return text;
    }

    @Override
    public String toString(){
        final StringBuilder sb = new StringBuilder();
        sb.append("Status");
        sb.append("{value=").append(value);
        sb.append(", text='").append(text).append('\'')
        sb.append('}');
        return sb.toString();
    }
}

所以在你的代码中你可以简单地使用 Status.ACTIVE 它将代表你的枚举的一个实例,它包含 valuetext 你想要的方式

原文由 GameDroids 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题