获取枚举的常量

将此枚举作为示例:

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

在 Java 中,枚举类与任何其他类一样,但对枚举值有一些定义的常量。此外,它有一个字段,它是一个包含所有值的数组和两个名为 values()valueOf(String) 的静态方法。
如果我们使用 Reflection 打印此类中的所有字段,我们可以看到这一点

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

输出将是:

NORTH
EAST
SOUTH
WEST
程度
ENUM $ VALUES

因此,我们可以像任何其他类一样使用 Reflection 检查枚举类。但 Reflection API 提供了三种枚举特定的方法。

枚举检查

Compass.class.isEnum();

对于表示枚举类型的类,返回 true。

检索值

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

返回所有枚举值的数组,如 Compass.values(),但不需要实例。

枚举常量检查

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

列出作为枚举值的所有类字段。