【发布时间】:2021-04-19 19:29:06
【问题描述】:
我有一个类扩展到另一个类,而那个类又扩展到另一个类。
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 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。
但请先阅读文档以了解它在接口等情况下返回的内容。在同一页面上可以使用更多方法。
【讨论】:
作为一种变体,使用紧密循环,您可以改用for 循环:
for (Class super_class = target_class.getSuperclass();
super_class != null;
super_class = super_class.getSuperclass())
// use super class here
【讨论】:
从Class1 的实例开始递归调用getSuperclass,直到到达Object。
【讨论】:
使用反射:
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;
}
【讨论】:
关于使用Class.getSuperclass(),其他答案是正确的。但是你必须反复这样做。类似的东西
Class superClass = getSuperclass();
while(superClass != null) {
// do stuff here
superClass = superClass.getSuperclass();
}
【讨论】: