Java 通过另一个值获取枚举值

Java 通过另一个值获取枚举值,java,enums,Java,Enums,我有下面的enum,它包含两个值,一个字符串标识符和一个布尔有效状态。我希望能够使用字符串标识符获取状态值 有人有什么建议我可以添加到下面的代码吗 public enum MyEnum { TYPEA("001", true), TYPEB("002", false); private final String identifier; private final boolean valid; MyEnu

我有下面的
enum
,它包含两个值,一个字符串标识符和一个布尔有效状态。我希望能够使用字符串标识符获取状态值

有人有什么建议我可以添加到下面的代码吗

public enum MyEnum {

    TYPEA("001", true),
    TYPEB("002", false);
    
    private final String identifier;
    private final boolean valid;

    MyEnum(String identifier, boolean valid) {
        this.identifier = identifier;
        this.valid = valid;
    }
}
这些类型具有方法
,您可以使用该方法提取所有枚举值,并将其标识符与通过方法参数传递的标识符进行比较,即:

public MyEnum getEnum(String identifier){
      for(MyEnum e : MyEnum.values())
         if(e.identifier.equals(identifier))
            return e;
      return null;
 }
或者更好:

public static Optional<MyEnum> getEnum(String identifier){
        return Arrays.stream(MyEnum.values()).filter(i -> i.identifier.equals(identifier)).findFirst();
}
public静态可选getEnum(字符串标识符){
返回Arrays.stream(MyEnum.values()).filter(i->i.identifier.equals(identifier)).findFirst();
}

这样,您就可以在方法签名上清楚地表明您可能找到或找不到枚举。

这是否回答了您的问题?否,我正在尝试通过另一个枚举值获取枚举值。
public static Optional<MyEnum> getEnum(String identifier){
        return Arrays.stream(MyEnum.values()).filter(i -> i.identifier.equals(identifier)).findFirst();
}