1. 程式人生 > >獲取一個類所有繼承的父類及實現的介面

獲取一個類所有繼承的父類及實現的介面

本來要判斷一個類的型別是否是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); } } }