为什么不用java.util.List检查java.lang.reflect.Field的实例

时间:2015-05-11 05:17:20

标签: java reflection

我想检查字段类型是否为List,但是出现错误:

Incompatible conditional operand types Class<capture#5-of ?> and 
     List
- Incompatible conditional operand types Class<capture#6-of ?> and 
     List

我该如何解决这个问题?

private void convert(Class<?> load) {

        Field[] fields = load.getDeclaredFields();
        int i = 0;
        for (Field field : fields) {
            Class<?> type = field.getType();
            if (type instanceof java.util.List) {
            }
        }
    }

2 个答案:

答案 0 :(得分:4)

private void convert(Class<?> load) {

    Field[] fields = load.getDeclaredFields();
    int i = 0;
    for (Field field : fields) {
        Class<?> type = field.getType();
        if (java.util.List.class.isAssignableFrom(type)) {
        }
    }
}

instanceof运算符仅用于实例!

答案 1 :(得分:1)

如果您希望字段的声明类型java.util.List完全匹配,则可以使用表达式field.getType()==java.util.List.class来测试它。

仍然,该字段的null或实现列表interface的具体类的实例。