获取枚举的常量
将此枚举作为示例:
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());
}
列出作为枚举值的所有类字段。