All super classes of a class

2019-02-01 18:58发布

I have a class that extends to another class and that class extends to another class.

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 

Now I want to find all super classes of class 1.

Anyone know how I could do that in java?

标签: java oop
6条回答
看我几分像从前
2楼-- · 2019-02-01 19:31

You can use getSuperclass() up to the Object.

But read the doc first to understand what it returns in the case of interfaces etc. There are more methods to play with on the same page.

查看更多
干净又极端
3楼-- · 2019-02-01 19:40

As a variation, with a tight loop, you can use a for loop instead:

for (Class super_class = target_class.getSuperclass();
     super_class != null;
     super_class = super_class.getSuperclass())
  // use super class here
查看更多
ゆ 、 Hurt°
4楼-- · 2019-02-01 19:41

The other answers are right about using Class.getSuperclass(). But you have to do it repeatedly. Something like

Class superClass = getSuperclass();
while(superClass != null) {
    // do stuff here
    superClass = superClass.getSuperclass();
}
查看更多
Summer. ? 凉城
5楼-- · 2019-02-01 19:45

Use reflection:

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;
}
查看更多
\"骚年 ilove
6楼-- · 2019-02-01 19:53

Recursively call getSuperclass starting from the instance of Class1 until you reach Object.

查看更多
放荡不羁爱自由
7楼-- · 2019-02-01 19:56

Use Class.getSuperClass() to traverse the hierarchy.

Class C = getClass();
while (C != null) {
  System.out.println(C.getName());
  C = C.getSuperclass();
}
查看更多
登录 后发表回答