java - 将枚举类型作为参数传递

标签 java enums

我想创建一个方法:

  • 接受枚举类型字符串作为参数
    • 字符串是一个特定枚举实例的名称
  • 返回符合该名称的枚举实例。

我尝试过的:

在类 TestUtil.java 中:

public static <E extends Enum<E>> E mapToEnum(Enum<E> mappingEnum, String data) {

    return mappingEnum.valueOf(E, data); // Not working, needs Class of Enum and String value
}

枚举:

public enum TestEnum {
    TEST1("A"),
    TEST2("B");

    private String value;

    private TestEnum(String value) {
        this.value = value;
    }
}

它应该如何工作(例如在 main 方法中):

TestEnum x = TestUtil.mapToEnum(TestEnum.class, "TEST1"); // TEST1 is the name of the first enum instance

问题是,我无法弄清楚我需要将什么传递给 mapToEnum 方法,以便我可以从该枚举中获取 valueOf

最佳答案

如果您提供的代码是可以接受的:

public static <E extends Enum<E>> E mapToEnum(Enum<E> mappingEnum, String data) {

    return mappingEnum.valueOf(E, data); // Not working, needs Class of Enum and String value
}

然后你所要做的就是修复它。

这是我测试的代码:

static <T extends Enum<T>> T mapToEnum(Class<T> mappingEnum, String data) {
    return Enum.valueOf(mappingEnum, data);
}

用法:

@Test
public void test() {
    TestEnum myEnum = mapToEnum(TestEnum.class, "TEST1");
    System.out.println(myEnum.value); //prints "A"
}

关于java - 将枚举类型作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060516/

相关文章:

java - 加入两个java流

java - 如何从另一个线程更新 JList?

iphone - NS_ENUM 给出编译器关于前向引用的警告

python - 将枚举转换为 Python 中的列表

java - java中返回枚举的静态方法

reactjs - 如何在 react / typescript 中使用枚举作为 Prop

java - 性能: How are font files usually interacted with?

java - 添加bash函数以使用多个命令行输入编译和运行java

java - 什么时候用 Java 在 HttpURLConnection 中设置 cookie?

enums - 是否可以在 Kotlin 中命名枚举常量 "name"?