Como llegar instancia de enumeraciones arbitrarias de nombre como cuerdas

prometer:

Suponga que tengo varios tipos enumerados con unos constantes de cada uno:

public enum MyEnum1 {

ConstantA(),
ConstantB(),
ConstantC();

}

public enum MyEnum2 {

ConstantA(),
ConstantB(),
ConstantC();

}

¿Cómo puedo obtener una instancia de una de estas enumeraciones arbitrariamente de su nombre para que pueda invocar Enum.values()sucesivamente.

Algo como: Enum<?> myEnumInstance = //something

El objetivo es invocar .values()a encontrar y recuperar los datos dentro de las constantes en dicha arbitraria enumbasada en la introducción de texto de usuario.

SDJ:

Si los tipos enumerados almacenar datos que sean destinados a ser visitada polimórfica, entonces se debe implementar una interfaz apropiada. Digamos que estos datos son una sola int, entonces los tipos enumerados podrían tener este aspecto (usando IntSupplier ):

public enum MyEnum1 implements IntSupplier {

    ConstantA(1),
    ConstantB(2),
    ConstantC(3);

    private final int number;

    private MyEnum1(int number) { this.number = number; }
    public int getAsInt() { return number; }
}

A continuación, puede aprovechar esa interfaz para obtener la lista de los valores enumerados (constantes) que se escribe correctamente:

IntSupplier[] myEnums = Class.forName("MyEnum1")
            .asSubclass(IntSupplier.class)
            .getEnumConstants();

Y usarlo para obtener los valores:

for(IntSupplier value : myEnums) {
        System.out.println(value.getAsInt());
}

Supongo que te gusta

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