成员变量的反射
/**
* 成员变量也是对象
* java.lang.reflect.Field
* Field类封装了关于成员变量的操作
* getFields()方法获取的是所有的public的成员变量的信息
* getDeclaredFields获取的是该类自己生命的成员变量的信息
*/
// Field [] fs=c.getFields();
Field [] fs=c.getDeclaredFields();
for( Field field:fs ){
//得到成员变量类型的类类型
Class filedType=field.getType();
String typeName=filedType.getTypeName();
//得到成员变量的名称
String filedName=field.getName();
System.out.println(typeName+" "+filedName);
}
/**
* 打印对象的构造函数的信息
* @param obj
*/
public static void printConMessage(Object obj){
Class c=obj.getClass();
/**
* 构造函数也是对象
* java.lang.Constructor中封装了构造函数的信息
* getConstructors获取所有的public的构造函数
* getDeclaredConstructors得到所有的构造函数
*/
// Constructor [] cs=c.getConstructors();
Constructor [] cs=c.getDeclaredConstructors();
for(Constructor constructor:cs){
System.out.print(constructor.getName()+"(");
//获取构造函数的参数列表-->得到的是参数列表的类类型
Class [] paramTypes=constructor.getParameterTypes();
for(Class class1:paramTypes){
System.out.print(class1.getName()+",");
}
System.out.println(")");
}
}