import java.util.*;
class Ancestry
{
public static void printAncestry(Class c)
{
// Walk up the inheritance path
LinkedList stack = new LinkedList();
stack.addFirst(c);
while ((c = c.getSuperclass()) != null)
stack.addFirst(c);
// Print with java.lang.Object at top
for (int i = 0; stack.size() > 0; ++i)
{
if (i > 0)
{
System.out.println(" ^");
}
Class cl = (Class)stack.removeFirst();
System.out.println(cl.getName());
}
}
public static void main(String[] args)
throws ClassNotFoundException
{
printAncestry(Class.forName("Sub"));
}
}
/* Output:
java.lang.Object
^
Super
^
Sub
*/
End of Listing