All super classes of a class

后端 未结 6 1377
情歌与酒
情歌与酒 2020-12-14 01:56

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         


        
相关标签:
6条回答
  • 2020-12-14 02:23

    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.

    0 讨论(0)
  • 2020-12-14 02:25

    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 讨论(0)
  • 2020-12-14 02:28

    Use Class.getSuperClass() to traverse the hierarchy.

    Class C = getClass();
    while (C != null) {
      System.out.println(C.getName());
      C = C.getSuperclass();
    }
    
    0 讨论(0)
  • 2020-12-14 02:41

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

    0 讨论(0)
  • 2020-12-14 02:48

    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;
    }
    
    0 讨论(0)
  • 2020-12-14 02:48

    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
    
    0 讨论(0)
提交回复
热议问题