版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
}
}