我有一个扩展到另一个类的类,该类扩展到另一个类。
class 1 extends class 2
class 2 extends class 3
class 3 extends class 4
class 4 extends class 5
class 5 extends class 6
现在我想找到1级的所有超类。
任何人都知道如何在java中做到这一点?
答案 0 :(得分:51)
使用Class.getSuperClass()
遍历层次结构。
Class C = getClass();
while (C != null) {
System.out.println(C.getName());
C = C.getSuperclass();
}
答案 1 :(得分:5)
您可以getSuperclass()
使用Object
。
但是首先阅读文档以了解它在界面等情况下返回的内容。在同一页面上可以使用更多方法。
答案 2 :(得分:4)
从Class1
的实例开始递归调用getSuperclass
,直至到达Object
。
答案 3 :(得分:3)
使用反射:
public static List<Class> getSuperClasses(Object o) {
List<Class> classList = new ArrayList<Class>();
Class class= o.getClass();
Class superclass = class.getSuperclass();
classList.add(superclass);
while (superclass != null) {
class = superclass;
superclass = class.getSuperclass();
classList.add(superclass);
}
return classList;
}
答案 4 :(得分:2)
其他答案是关于使用Class.getSuperclass()
的。但你必须反复做。像
Class superClass = getSuperclass();
while(superClass != null) {
// do stuff here
superClass = superClass.getSuperclass();
}
答案 5 :(得分:2)
作为变体,使用紧密循环,您可以改为使用for
循环:
for (Class super_class = target_class.getSuperclass();
super_class != null;
super_class = super_class.getSuperclass())
// use super class here