All super classes of a class
I have a class that extends to another class and that class e开发者_如何学JAVAxtends to another class.
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
Now I want to find all super classes of class 1.
Anyone know how I could do that in java?
Use Class.getSuperClass()
to traverse the hierarchy.
Class C = getClass();
while (C != null) {
System.out.println(C.getName());
C = C.getSuperclass();
}
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.
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
Recursively call getSuperclass
starting from the instance of Class1
until you reach Object
.
Use reflection:
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;
}
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();
}
精彩评论