web-dev-qa-db-fra.com

Comment obtenir toutes les valeurs enum en Java?

Je suis tombé sur ce problème que je ne connaissais pas le type enum dont j’ai besoin pour itérer ses valeurs possibles.

if (value instanceof Enum){
   Enum enumValue = (Enum)value;
}

Des idées comment extraire d'enumValue ses valeurs possibles?

82
Roman
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
143
ColinD
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();

Ou

YourEnumClass[] yourEnums = YourEnumClass.values();
82
someone

Enums sont comme Classes en ce sens qu'ils sont dactylographiés. Votre code actuel vérifie simplement s'il s'agit d'un Enum sans spécifier le type d'Enum dont il fait partie.

Comme vous n’avez pas spécifié le type d’énum, ​​vous devrez utiliser la réflexion pour déterminer la liste des valeurs d’énum.

Vous pouvez le faire comme suit:

enumValue.getDeclaringClass().getEnumConstants() 

Cela retournera un tableau d'objets Enum, chacun étant l'une des options disponibles.

13
RodeoClown

méthode des valeurs d'énum

méthode enum.values ​​() qui renvoie toutes les instances enum.

  public class EnumTest {
        private enum Currency {
        PENNY("1 rs"), NICKLE("5 rs"), DIME("10 rs"), QUARTER("25 rs");
        private String value;
        private Currency(String brand) {
              this.value = brand;
        }

        @Override
        public String toString() {
              return value;
        }
  }

  public static void main(String args[]) {

        Currency[] currencies = Currency.values();

        // enum name using name method
        // enum to String using toString() method
        for (Currency currency : currencies) {
              System.out.printf("[ Currency : %s,
                         Value : %s ]%n",currency.name(),currency);
        }
  }
}

http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html

11
Rajesh Dixit

... ou MyEnum.values ​​()? Ou est-ce que je manque quelque chose?

5
deleted

Ici, le rôle est une énumération qui contient les valeurs suivantes [ADMIN, USER, OTHER].

List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
    System.out.println(role);
    });
1
Ashwani Sharma