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
因此,我们可以像其他任何类一样使用反射检查枚举类。但是ReflectionAPI提供了三种特定于枚举的方法。
枚举检查
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());
}列出所有属于枚举值的类字段。