import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class ShowClass {
public static void main(String[] args) throws ClassNotFoundException {
Class aClass = Class.forName("javax.swing.JComponent");
if (aClass.isInterface()) {
System.out.print(Modifier.toString(aClass.getModifiers()) + " "
+ typeName(aClass));
} else if (aClass.getSuperclass() != null) {
System.out.print(Modifier.toString(aClass.getModifiers()) + " class "
+ typeName(aClass) + " extends " + typeName(aClass.getSuperclass()));
} else {
System.out.print(Modifier.toString(aClass.getModifiers()) + " class "
+ typeName(aClass));
}
Class[] interfaces = aClass.getInterfaces();
if ((interfaces != null) && (interfaces.length > 0)) {
if (aClass.isInterface())
System.out.print(" extends ");
else
System.out.print(" implements ");
for (int i = 0; i < interfaces.length; i++) {
if (i > 0)
System.out.print(", ");
System.out.print(typeName(interfaces[i]));
}
}
System.out.println(" {");
Constructor[] constructors = aClass.getDeclaredConstructors();
for (int i = 0; i < constructors.length; i++)
printMethodOrConstructor(constructors[i]);
Field[] fields = aClass.getDeclaredFields();
for (int i = 0; i < fields.length; i++)
printField(fields[i]);
Method[] methods = aClass.getDeclaredMethods();
for (int i = 0; i < methods.length; i++)
printMethodOrConstructor(methods[i]);
System.out.println("}");
}
public static String typeName(Class t) {
String brackets = "";
while (t.isArray()) {
brackets += "[]";
t = t.getComponentType();
}
String name = t.getName();
int pos = name.lastIndexOf('.');
if (pos != -1)
name = name.substring(pos + 1);
return name + brackets;
}
public static String modifiers(int m) {
if (m == 0)
return "";
else
return Modifier.toString(m) + " ";
}
public static void printField(Field f) {
System.out.println(" " + modifiers(f.getModifiers())
+ typeName(f.getType()) + " " + f.getName() + ";");
}
public static void printMethodOrConstructor(Member member) {
Class returntype = null, parameters[], exceptions[];
if (member instanceof Method) {
Method m = (Method) member;
returntype = m.getReturnType();
parameters = m.getParameterTypes();
exceptions = m.getExceptionTypes();
System.out.print(" " + modifiers(member.getModifiers())
+ typeName(returntype) + " " + member.getName() + "(");
} else {
Constructor c = (Constructor) member;
parameters = c.getParameterTypes();
exceptions = c.getExceptionTypes();
System.out.print(" " + modifiers(member.getModifiers())
+ typeName(c.getDeclaringClass()) + "(");
}
for (int i = 0; i < parameters.length; i++) {
if (i > 0)
System.out.print(", ");
System.out.print(typeName(parameters[i]));
}
System.out.print(")");
if (exceptions.length > 0)
System.out.print(" throws ");
for (int i = 0; i < exceptions.length; i++) {
if (i > 0)
System.out.print(", ");
System.out.print(typeName(exceptions[i]));
}
System.out.println(";");
}
}
|