开发者

All super classes of a class

I have a class that extends to another class and that class e开发者_如何学JAVAxtends 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?


Use Class.getSuperClass() to traverse the hierarchy.

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


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.


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


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


Use reflection:

public static List<Class> getSuperClasses(Object o) {
  List<Class> classList = new ArrayList<Class>();
  Class clazz = o.getClass();
  Class superclass = clazz.getSuperclass();
  classList.add(superclass);
  while (superclass != null) {   
    clazz = superclass;
    superclass = class.getSuperclass();
    classList.add(superclass);
  }
  return classList;
}


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜