java.lang.Class的getSuperclass()方法:
public Class<? super T> getSuperclass()
返回表示此Class对象所代表的实体(类、接口、基本类型或void)的直接父类的Class。如果此Class代表Object类、一个接口、一个基本类型,或void,则返回null。如果此Class对象代表一个数组类,则返回表示Object类的Class对象。
下面示例中,找直接父类,如果直接父类还有直接父类,继续往上上找,直到顶层:
package com.team.getclassobject.demo1;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> c = Class.forName("java.io.ObjectOutputStream");
List<Class> myList = new ArrayList<>();
serarAncestors(c, myList);
for (Class<?> cl : myList) {
System.out.println(cl.getCanonicalName());
}
}
public static void serarAncestors(Class<?> c, List<Class> myList) {
// 找直接父类
Class<?> ancestor = c.getSuperclass();
if (ancestor != null) {
// 如果直接父类还有直接父类,继续递归往上查找
myList.add(ancestor);
serarAncestors(ancestor, myList);
}
}
}
运行输出:

895

被折叠的 条评论
为什么被折叠?



