es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo crear una lista de diferentes clases Enum

Me gustaría crear una lista de diferentes clases Enum y poder acceder a los valores de estos Enums en la lista. Por ejemplo, considera dos Enums:

enum Enum1 {
  ENUM1VALUE1, ENUM1VALUE2;
}

enum Enum2 {
  ENUM2VALUE1, ENUM2VALUE2;
}

Me gustaría construir una lista de Enum1 y Enum2 de manera que pueda imprimir los valores de Enum1 y Enum2.

Se vería algo así, pero esto obviamente no compila:

List<enum> enumList = Arrays.asList(Enum1, Enum2);
for (Enum enumEntry: enumList) {
    System.out.println(enumList.values());
}

¿Alguna idea?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes crear una lista de clases Enum utilizando los siguientes pasos:

    1. Crea un Enum padre que ambas Enum1 y Enum2 extiendan:
    enum ParentEnum {
    }
    
    enum Enum1 extends ParentEnum {
      ENUM1_VALUE_1, ENUM1_VALUE_2;
    }
    
    enum Enum2 extends ParentEnum {
      ENUM2_VALUE_1, ENUM2_VALUE_2;
    }
    
    1. Utiliza el ParentEnum como el parámetro de tipo para la Lista de manera que pueda almacenar cualquier enum que extienda ParentEnum:
    List<parentenum> enumList = Arrays.asList(Enum1.ENUM1_VALUE_1, Enum1.ENUM1_VALUE_2, Enum2.ENUM2_VALUE_1, Enum2.ENUM2_VALUE_2);
    
    1. Recorre la lista y utiliza el operador instanceof para verificar el tipo de cada enum e imprimir su valor:
    for (ParentEnum enumEntry: enumList) {
        if (enumEntry instanceof Enum1) {
            System.out.println(((Enum1)enumEntry).name());
        } else if (enumEntry instanceof Enum2) {
            System.out.println(((Enum2)enumEntry).name());
        }
    }
    

    Esto producirá la siguiente salida:
    ENUM1_VALUE_1
    ENUM1_VALUE_2
    ENUM2_VALUE_1
    ENUM2_VALUE_2

Comments are closed.