java - 是否可以从多个枚举中通过字符串获取枚举值?

标签 java enums

如果我有:

Enum firstEnum(){
  A("a"), B("b");
}


Enum secondEnum(){
  C("c"),D("d");
}

如何从两个不同的枚举中通过字符串获取枚举值?我需要在方法中使用它。

Enum<?> myEnum = [METHOD THAT GETS ENUM BY STRING FROM TWO DIFFRENT ENUMS];

最佳答案

你可以这样做:

import java.util.ArrayList;
import java.util.List;

interface ValueProvider{
    public String getValue();
}
enum FirstEnum implements ValueProvider {
    A("a"), B("b");
    private String value;
    FirstEnum(String s) {
        this.value=s;
    }
    public String getValue(){
        return value;
    }
}

enum SecondEnum implements ValueProvider{
    C("c"), D("d");
    private String value;
    SecondEnum(String s){
        this.value=s;
    }
    public String getValue(){
        return value;
    }
}

public class enumTest {
    public static void main(String[] args) {
        ArrayList<ValueProvider> al = new ArrayList<ValueProvider>();
        al.add(FirstEnum.A);
        al.add(SecondEnum.C);
        al.add(FirstEnum.B);
        al.add(SecondEnum.D);
        listEnumValues(al);
    }
    public static void listEnumValues(List<ValueProvider> al){
        for(var e:al){
            System.out.println(e.getValue());
        }
    }
}

关于java - 是否可以从多个枚举中通过字符串获取枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59813644/

相关文章:

python - 将值映射到相关值的枚举函数

java - 为什么构造函数未定义?

c++ - 虚函数返回的枚举协方差

java - 没有得到唯一的时间戳

java - 将 Fax4J 与多个传真调制解调器一起使用?

java - 打开文件并访问特定索引处的特定字符

快速字典 : map within a map

c# - 如何检查是否设置了标志组合的任何标志?

java - 如何将 EOF 发送到 Java 中的进程?

java - 如果查询有子查询,则准备语句不成功