如何通过Java中的用户定义名称获取枚举?

时间:2018-11-29 10:13:04

标签: java

我在Java 8中定义了一个枚举,如下所示:

public enum Cflb implements IBaseEnum {        
    没收违法所得("没收违法所得、没收非法财物", 2),
    暂扣或者吊销许可证("暂扣或者吊销许可证、暂扣或者吊销执照", 4);
    private String name;
    private int value;

    public void setName(String name) {
        this.name = name;
    }

    public void setValue(int value) {
        this.value = value;
    }

    Cflb(String name, int value) {
        this.name = name;
        this.value = value;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public int getValue() {
        return value;
    }  
}

如何通过“暂扣或吊销许可证,暂扣或吊销执照”枚举?注意:不能按值获取枚举。代码可能像这样:

Cflb cflb = getEnumnByInternalName("暂扣或者吊销许可证、暂扣或者吊销执照");

1 个答案:

答案 0 :(得分:3)

使用values()遍历枚举常量并比较name

static Cflb getEnumnByInternalName(String iname) {
  for(Cbfl c : values()){
    if(c.name.equals(iname)){
      return c;
    }
  }
  return null; //or throw an Exception, whatever you need
}

然后您可以像这样使用它:

Cflb cflb = Cflb.getEnumnByInternalName("暂扣或者吊销许可证、暂扣或者吊销执照");

正如上面@khelwood所提到的:删除二传手。