一类的所有超类
我有一个类扩展到另一个类,该类扩展到另一个类。
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中做到这一点?
使用Class.getSuperClass()
遍历层次结构。
Class C = getClass(); while (C != null) { System.out.println(C.getName()); C = C.getSuperclass(); }
您可以使用getSuperclass()
直到Object
。
但是首先阅读文档以了解它在接口等情况下返回的内容。在同一页面上可以使用更多方法。
从Class1
的实例开始递归调用getSuperclass
,直到到达Object
。
使用reflection:
public static List getSuperClasses(Object o) { List classList = new ArrayList (); Class class= o.getClass(); Class superclass = class.getSuperclass(); classList.add(superclass); while (superclass != null) { class = superclass; superclass = class.getSuperclass(); classList.add(superclass); } return classList; }
作为变体,使用紧密循环,您可以使用for
循环:
for (Class super_class = target_class.getSuperclass(); super_class != null; super_class = super_class.getSuperclass()) // use super class here
其他答案是关于使用Class.getSuperclass()
。 但你必须反复这样做。 就像是
Class superClass = getSuperclass(); while(superClass != null) { // do stuff here superClass = superClass.getSuperclass(); }