Ответ 1
Используйте Class.getSuperClass() для перемещения по иерархии.
Class C = getClass();
while (C != null) {
System.out.println(C.getName());
C = C.getSuperclass();
}
У меня есть класс, который распространяется на другой класс, и этот класс распространяется на другой класс.
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?
Используйте Class.getSuperClass() для перемещения по иерархии.
Class C = getClass();
while (C != null) {
System.out.println(C.getName());
C = C.getSuperclass();
}
Вы можете использовать getSuperclass() до Object
Но сначала прочитайте документ, чтобы понять, что он возвращает в случае интерфейсов и т.д. На одной странице есть еще несколько методов.
Рекурсивно вызовите getSuperclass, начиная с экземпляра Class1
, пока не достигнете Object
Использовать отражение:
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;
}
Другие ответы правильны в использовании Class.getSuperclass()
. Но вы должны делать это неоднократно. Что-то вроде
Class superClass = getSuperclass();
while(superClass != null) {
// do stuff here
superClass = superClass.getSuperclass();
}
В качестве варианта, с жестким циклом, вы можете вместо этого использовать цикл for
:
for (Class super_class = target_class.getSuperclass();
super_class != null;
super_class = super_class.getSuperclass())
// use super class here