I have a class that extends to another class and that class extends 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.
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 class= o.getClass();
Class superclass = class.getSuperclass();
classList.add(superclass);
while (superclass != null) {
class = superclass;
superclass = class.getSuperclass();
classList.add(superclass);
}
return classList;
}
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
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();
}