获取一个类所有继承的父类及实现的接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/canyanruxue/article/details/83015167

本来要判断一个类的类型是否是List,用Obj.getClass()==List.class对付一下,结果其实传过来的Object是List的实现类ArrayList(也只能是List的实现类)。这就很奇怪了,如果用ArrayList.class又感觉太妥协了。
就写了这个作为class判断,获取获取一个类所有继承的父类及实现的接口。

private static void getAllClazz(Class<?> clazz, List<Class<?>> superClazzList) {
    if (clazz == null) {
        return;
    }
    if (!superClazzList.contains(clazz)) {
        superClazzList.add(clazz);
        Class<?> superclass = clazz.getSuperclass();
        getAllClazz(superclass, superClazzList);
        Class<?>[] interfaces = clazz.getInterfaces();
        for (Class<?> interfaceCls : interfaces) {
            getAllClazz(interfaceCls, superClazzList);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/canyanruxue/article/details/83015167