獲取一個類所有繼承的父類及實現的介面
阿新 • • 發佈:2018-11-08
本來要判斷一個類的型別是否是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);
}
}
}