Java Language Obtenir les constantes d'une énumération


Exemple

Donner cette énumération comme exemple:

enum Compass {
    NORTH(0),
    EAST(90),
    SOUTH(180),
    WEST(270);
    private int degree;
    Compass(int deg){
        degree = deg;
    }
    public int getDegree(){
        return degree;
    }
}

En Java, une classe enum est comme toute autre classe mais possède des constantes définies pour les valeurs enum. De plus, il contient un champ qui est un tableau contenant toutes les valeurs et deux méthodes statiques avec des values() name values() et valueOf(String) .
Nous pouvons le voir si nous utilisons Reflection pour imprimer tous les champs de cette classe

for(Field f : Compass.class.getDeclaredFields())
    System.out.println(f.getName());

le résultat sera:

NORD
EST
SUD
OUEST
degré
ENUM $ VALUES

Nous pourrions donc examiner les classes enum avec Reflection comme toute autre classe. Mais l'API Reflection propose trois méthodes spécifiques à l'énumération.

chèque enum

Compass.class.isEnum();

Renvoie true pour les classes qui représentent un type enum.

récupérer des valeurs

Object[] values = Compass.class.getEnumConstants();

Retourne un tableau de toutes les valeurs enum comme Compass.values ​​() mais sans avoir besoin d'une instance.

enum contrôle constant

for(Field f : Compass.class.getDeclaredFields()){
    if(f.isEnumConstant())
        System.out.println(f.getName());
}

Répertorie tous les champs de classe qui sont des valeurs enum.