獲取列舉的常量
將此列舉作為示例:
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());
}
列出作為列舉值的所有類欄位。