java—类的所有超类

des4xlb0  于 2021-06-30  发布在  Java
关注(0)|答案(6)|浏览(215)

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

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怎么做吗?

sg24os4d

sg24os4d1#

使用反射:

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;
}
3bygqnnd

3bygqnnd2#

你可以用 getSuperclass() 直到 Object .
但是首先阅读文档,了解它在接口等情况下返回什么。在同一页上有更多的方法可以使用。

baubqpgj

baubqpgj3#

其他的答案是正确的 Class.getSuperclass() . 但你必须反复做。像这样的

Class superClass = getSuperclass();
while(superClass != null) {
    // do stuff here
    superClass = superClass.getSuperclass();
}
oiopk7p5

oiopk7p54#

递归调用 getSuperclass 从的示例开始 Class1 直到你到达 Object .

igetnqfo

igetnqfo5#

作为一种变体,对于紧密循环,可以使用 for 改为循环:

for (Class super_class = target_class.getSuperclass();
     super_class != null;
     super_class = super_class.getSuperclass())
  // use super class here
kkih6yb8

kkih6yb86#

使用 Class.getSuperClass() 遍历层次结构。

Class C = getClass();
while (C != null) {
  System.out.println(C.getName());
  C = C.getSuperclass();
}

相关问题