如何使用反射查找字段是否为枚举数组?

时间:2014-08-08 07:47:10

标签: java arrays reflection enums

如果特定字段是枚举数组,我想在Java中使用反射来查找。有谁知道怎么做?

2 个答案:

答案 0 :(得分:5)

首先检查字段是否为field.getType().isArray()的数组,然后检查数组组件类型是否为field.getType().getComponentType().isEnum()

的枚举

答案 1 :(得分:2)

正如霍尔格在评论中提到的,一个简单的Enum[].class.isAssignableFrom会做到这一点。

import javax.swing.SortOrder;

public class Main {

    private SortOrder[] sortOrders;

    public static void main(String[] args) throws SecurityException,
            NoSuchFieldException {
        Field sortOrdersField = Main.class.getDeclaredField("sortOrders");

        System.out.println(isEnumArray(sortOrdersField));
    }

    private static boolean isEnumArray(Field field) {
        Class<?> type = field.getType();
        return Enum[].class.isAssignableFrom(type);
    }
}