这个小程序显示了一个给定对象的继承等级,采用了递归算法,可以显示对象继承的所有类和实现的所有接口。
//Hierarchy.java
import java.util.*;
import javax.swing.*;
public class Hierarchy {
public static void showSuperClasses(Class c) {
Class superClass = c.getSuperclass();
if (superClass != null) {
prt(superClass.getName());
showSuperClasses(superClass);
}
}
public static void showSuperClasses(Object o) {
showSuperClasses(o.getClass());
}
public static void showInterfaces(Class c) {
Class[] interfaces = c.getInterfaces();
for (int i = 0; i < interfaces.length; i++) {
prt(interfaces[i].getName());
showInterfaces(interfaces[i]);
}
}
public static void showInterfaces(Object o) {
showInterfaces(o.getClass());
}
public static void showHierarchy(Class c) {
Class superClass = c.getSuperclass();
Class[] interfaces = c.getInterfaces();
if (superClass != null) {
prt("extends: ");
prt(superClass.getName());
showHierarchy(superClass);
}
for (int i = 0; i < interfaces.length; i++) {
prt("implements:");
prt(interfaces[i].getName());
showHierarchy(interfaces[i]);
}
}
public static void showHierarchy(Object o) {
showHierarchy(o.getClass());
}
public static void prt(String s) {
System.out.println(s);
}
public static void main(String[] args) {
//showSuperClasses(new ArrayList());
//showInterfaces(new ArrayList());
showHierarchy(new Z1());
}
}
interface A1 {}
interface A2
extends A1 {}
interface B1 {}
interface B2
extends B1 {}
interface C1 {}
interface C2
extends C1 {}
class X1 implements A2{}
class Y1 implements B2{}
class Z1 extends X1 implements C2{}