獲取列舉的常量

將此列舉作為示例:

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());
}

列出作為列舉值的所有類欄位。