Java枚举反向查找

Zed*_*Zed 1 java enums

所以我有这个枚举不能按我的预期工作,需要一些修改:

public enum MyEnum {

    CODE000("text description comes here"),

    private final String value;

    private static final Map<String, MyEnum> LOOKUP = Maps.uniqueIndex(
            Arrays.asList(MyEnum.values()),
            MyEnum::getValue
    );

    MyEnum(final String value) {
        this.value = value;
    }

    public String getValue() {
        return value;

    }


    public static MyEnum fromStatus(String status) {
        return LOOKUP.get(status);
    }
}
Run Code Online (Sandbox Code Playgroud)

它现在的工作方式是:

MyEnum.fromStatus("text description comes here") 当然,我想要反过来:

MyEnum.fromStatus("CODE000") 归还我 "text description comes here"

有人可以建议我如何改变这个吗?

ern*_*t_k 6

你需要的是一个文字查找,你可以通过调用valueOf:

MyEnum code000 =  MyEnum.valueOf("CODE000");
Run Code Online (Sandbox Code Playgroud)

然后:

String val = code000.getValue();
Run Code Online (Sandbox Code Playgroud)

请注意,如果传递给的字符串valueOf未解析为枚举文字,则会引发异常MyEnum.