检查类是否为列表的实例

时间:2019-04-25 17:47:26

标签: java reflection

我需要将所有方法归类到可以返回List的类中,然后检查所有这些方法是哪种List类型。当我得到该类型时,我需要检查它是否是特定接口的实现。

我愿意:

Person person = new Person();
Class c = person.class;
for (Method m: c.getDeclaredMethods()) {
    // this gets me all the getters
    if (m.getParameterTypes().size() == 0) {
        Class<?> returnType = m.getReturnType()
        if (returnType.equals(java.util.List.class)) {
              // Can get here
              // But how to get the class that is used to parameterise the 
              // list.
        }
    }
}

如何获取用于参数化列表的类?

1 个答案:

答案 0 :(得分:1)

使用m.getGenericReturnType()代替m.getReturnType()

这会给您返回Type。然后,您需要测试这是否是ParameterizedType的实例:如果是,则使用getActualTypeArguments()进行转换并提取类型参数。