class ClassInspector { public static void inspect(Class c) { // Determine type of class String type; if (c.isInterface()) type = "interface"; else if (c.isArray()) type = "array"; else if (c.isPrimitive()) type = "primitive"; else type = "class"; // Print name System.out.println(type + " " + c.getName()); // Print component type, if array if (type == "array") System.out.println("\tarray of " + c.getComponentType().getName()); // Print Superclass Class superClass = c.getSuperclass(); if (superClass != null) System.out.println("\textends " + superClass.getName()); // Print interfaces implemented, if any Class[] interfaces = c.getInterfaces(); for (int i = 0; i < interfaces.length; ++i) System.out.println("\timplements " + interfaces[i].getName()); } public static void main(String[] args) throws ClassNotFoundException { inspect(Class.forName("Sub")); inspect(Class.forName("Super")); inspect(Class.forName("java.lang.Object")); inspect(int.class); Super[] arr = new Super[2]; inspect(arr.getClass()); inspect(Class.forName("Inter")); } } /* Output: class Sub extends Super class Super extends java.lang.Object class java.lang.Object primitive int array [LSuper; array of Super extends java.lang.Object implements java.lang.Cloneable implements java.io.Serializable interface Inter */ End of Listing