Java获取枚举常量

示例

以该枚举为例:

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

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

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

输出将是:

NORTH
EAST
SOUTH
WEST
程度
ENUM $VALUES

因此,我们可以像其他任何类一样使用反射检查枚举类。但是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());
}

列出所有属于枚举值的类字段。