Подтвердить что ты не робот

Все суперклассы класса

У меня есть класс, который распространяется на другой класс, и этот класс распространяется на другой класс.

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?

4b9b3361

Ответ 1

Используйте Class.getSuperClass() для перемещения по иерархии.

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

Ответ 2

Вы можете использовать getSuperclass() до Object

Но сначала прочитайте документ, чтобы понять, что он возвращает в случае интерфейсов и т.д. На одной странице есть еще несколько методов.

Ответ 3

Рекурсивно вызовите getSuperclass, начиная с экземпляра Class1, пока не достигнете Object

Ответ 4

Использовать отражение:

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

Другие ответы правильны в использовании Class.getSuperclass(). Но вы должны делать это неоднократно. Что-то вроде

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

Ответ 6

В качестве варианта, с жестким циклом, вы можете вместо этого использовать цикл for:

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