Pase tipo de enumeración como parámetro

MauriceNino :

Quiero crear un método, que:

  • Toma el tipo de una enumeración y una cadena como argumentos
    • La cadena es el nombre de la instancia de enumeración uno específico
  • Devuelve la instancia de enumeración que encaja con ese nombre.

Lo que he intentado:

En la clase 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
}

La enumeración:

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

    private String value;

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

Cómo debería funcionar (por ejemplo en el método principal):

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

El problema es que no puedo averiguar lo que tengo que pasar al mapToEnummétodo, de modo que pueda obtener el valueOfde esa enumeración.

Fenio:

Si el código que ha proporcionado no es aceptable:

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
}

Entonces todo lo que tiene que hacer es arreglarlo.

Aquí está el código que probé:

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

Uso:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=330509&siteId=1
Recomendado
Clasificación