如果特定字段是枚举数组,我想在Java中使用反射来查找。有谁知道怎么做?
答案 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);
}
}