java - 如何检查 java.lang.reflect.Method 返回类型是 Collection?

标签 java reflection collections

我有方法获取如下所示的 bean 属性列表。如何检查方法返回类型是集合(如 List、Set...)。 isInstance(Collection.class) 不起作用。

public static List<String> getBeanProperties(String className, boolean withLists) {

    ArrayList<String> a = new ArrayList();
    try {
        Class c = Class.forName(className);
        Method methods[] = c.getMethods();
        for (int i = 0; i < methods.length; i++) {
            String m = methods[i].getName();
            if(m.startsWith("get") && methods[i].getParameterTypes().length == 0) {

                if((methods[i].getReturnType().isInstance(Collection.class)) && !withLists) {
                    // skip lists
                } else {
                    String f = m.substring(3);
                    char ch = f.charAt(0);
                    char lower = Character.toLowerCase(ch);
                    f = lower + f.substring(1);
                    a.add(f);
                }
            }
        }
    } catch (Exception e) {
        log.error(e.getMessage(), e);
    }

    return a;
}

最佳答案

使用 Collection.class.isAssignableFrom(returnType)Reference

关于java - 如何检查 java.lang.reflect.Method 返回类型是 Collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4087113/

相关文章:

java - 在 Java 中转换 'ArrayList<String> to ' String[]'

java - 对 HttpSession 的部分模拟

java - OpenEntityManagerInViewFilter 和 LazyInitializationException

C# 将类型转换为相同类型的 IEnumerable?

.net - 是否有像集合这样的字典可以使用其值的属性作为键?

java - 如何创建包含 N 个对象的列表?

java - Array-2 zeromax codingbat

java - 在开发 JAX-WS Web 服务时删除注释并添加 xml

c# - 我们的 C# 类成员有多少(多少) 'private'?

c# - 如何自动识别对函数的特定调用?