我有一个扩展到另一个类的类,这个类扩展到另一个类。
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怎么做吗?
sg24os4d1#
使用反射:
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; }
3bygqnnd2#
你可以用 getSuperclass() 直到 Object .但是首先阅读文档,了解它在接口等情况下返回什么。在同一页上有更多的方法可以使用。
getSuperclass()
Object
baubqpgj3#
其他的答案是正确的 Class.getSuperclass() . 但你必须反复做。像这样的
Class.getSuperclass()
Class superClass = getSuperclass(); while(superClass != null) { // do stuff here superClass = superClass.getSuperclass(); }
oiopk7p54#
递归调用 getSuperclass 从的示例开始 Class1 直到你到达 Object .
getSuperclass
Class1
igetnqfo5#
作为一种变体,对于紧密循环,可以使用 for 改为循环:
for
for (Class super_class = target_class.getSuperclass(); super_class != null; super_class = super_class.getSuperclass()) // use super class here
kkih6yb86#
使用 Class.getSuperClass() 遍历层次结构。
Class.getSuperClass()
Class C = getClass(); while (C != null) { System.out.println(C.getName()); C = C.getSuperclass(); }
6条答案
按热度按时间sg24os4d1#
使用反射:
3bygqnnd2#
你可以用
getSuperclass()
直到Object
.但是首先阅读文档,了解它在接口等情况下返回什么。在同一页上有更多的方法可以使用。
baubqpgj3#
其他的答案是正确的
Class.getSuperclass()
. 但你必须反复做。像这样的oiopk7p54#
递归调用
getSuperclass
从的示例开始Class1
直到你到达Object
.igetnqfo5#
作为一种变体,对于紧密循环,可以使用
for
改为循环:kkih6yb86#
使用
Class.getSuperClass()
遍历层次结构。