一个班级的所有超类

时间:2011-04-15 15:48:02

标签: java oop

我有一个扩展到另一个类的类,该类扩展到另一个类。

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中做到这一点?

6 个答案:

答案 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
相关问题