给定类名,打印关于类的所有信息
import java.lang.reflect.*;
import javax.activation.FileDataSource;
public class ReflactionTest {
public ReflactionTest() {
}
public static void print(String s){
System.out.print(s);
}
public static void println(String s){
System.out.println(s);
}
public static void main(String[]args)
{
String name="java.awt.Button";
try {
Class cl=Class.forName(name);
Class supercl=cl.getSuperclass();
String clmodifiers=Modifier.toString(cl.getModifiers());
if(clmodifiers.length()>0)
print(clmodifiers+" ");
print(name+" ");
if(supercl!=null&&supercl!=Object.class)
println("extends "+supercl.getName());
println("{");
printField(cl);
println("");
printConstructor(cl);
println("");
printMethods(cl);
println("}");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//打印所有构造器信息
public static void printConstructor(Class cl)
{
Constructor[]constructors=cl.getConstructors();
for(Constructor c:constructors)
{
String name=c.getName();
print("\t");
String modifer=Modifier.toString(c.getModifiers());
if(modifer.length()>0)
print(modifer+" ");
print(name+"(");
Class []parmTypes=c.getParameterTypes();
for(int i=0;i<parmTypes.length;i++)
{
if(i>0)print(", ");
print(parmTypes[i].getTypeName());
}
println(");");
}
}
//打印所有方法信息
public static void printMethods(Class cl)
{
Method []methods=cl.getDeclaredMethods();
for(Method c:methods)
{
String name=c.getName();
print("\t");
String modifer=Modifier.toString(c.getModifiers());
if(modifer.length()>0)
print(modifer+" ");
print(name+"(");
Class []parmTypes=c.getParameterTypes();
for(int i=0;i<parmTypes.length;i++)
{
if(i>0)print(", ");
print(parmTypes[i].getTypeName());
}
println(");");
}
}
//打印类域信息
public static void printField(Class cl)
{
Field []fields=cl.getFields();
for(Field f:fields)
{
Class typeClass=f.getType();
String name=f.getName();
print("\t");
String modifier=Modifier.toString(f.getModifiers());
if(modifier.length()>0)
print(modifier+" ");
println(typeClass.getName()+" "+name+" ");
}
}
}