Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中通过用户定义的名称获取枚举?_Java - Fatal编程技术网

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

如何在java中通过用户定义的名称获取枚举?,java,Java,我在Java 8中定义了一个枚举,如下所示: public enum Cflb implements IBaseEnum { 没收违法所得("没收违法所得、没收非法财物", 2), 暂扣或者吊销许可证("暂扣或者吊销许可证、暂扣或者吊销执照", 4); private String name; private int value; public void setName(String name) { this.name =

我在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("暂扣或者吊销许可证、暂扣或者吊销执照");
Cflb cflb = Cflb.getEnumnByInternalName("暂扣或者吊销许可证、暂扣或者吊销执照");
如何通过“”获取enumn暂扣或者吊销许可证、暂扣或者吊销执照"? 注意:不能按值获取enumn。代码可能如下:

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("暂扣或者吊销许可证、暂扣或者吊销执照");
Cflb cflb = Cflb.getEnumnByInternalName("暂扣或者吊销许可证、暂扣或者吊销执照");

使用
values()
循环枚举常量,并比较
名称

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
}
然后你可以这样使用它:

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("暂扣或者吊销许可证、暂扣或者吊销执照");
Cflb cflb = Cflb.getEnumnByInternalName("暂扣或者吊销许可证、暂扣或者吊销执照");

正如@khelwood上面提到的:删除setter。

使用
values()
循环枚举常量,并比较
名称

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
}
然后你可以这样使用它:

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("暂扣或者吊销许可证、暂扣或者吊销执照");
Cflb cflb = Cflb.getEnumnByInternalName("暂扣或者吊销许可证、暂扣或者吊销执照");

正如@khelwood上面提到的:删除setter。

循环遍历enum元素,直到找到具有匹配的
名称的元素。
。顺便说一句,在一个enum中有setter是不正常的。通常期望enum是完全恒定的。
IBaseEnum
到底是什么?这是一个“真实的”值吗“Java枚举?或者只是一个名为“enum”的类?循环遍历enum元素,直到找到具有匹配的
名称的类为止。顺便说一句,在enum中使用setter是不正常的。枚举通常应为完全常量。
IBaseEnum
究竟是什么?这是一个“真正的”Java枚举吗?或者只是一个名为“enum”的类?谢谢,我已经根据您的提示解决了这个问题。@f1sh谢谢,我已经根据您的提示解决了这个问题。@f1sh