All super classes of a class

2019-02-01 19:03发布

问题:

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?

回答1:

Use Class.getSuperClass() to traverse the hierarchy.

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


回答2:

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:

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



回答4:

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


回答5:

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


回答6:

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();
}


标签: java oop