//解析普通的方法
@Test
public void fetchMethods() throws Exception{
//(1)获得类模板
Class clazz = Class.forName("hncu.reflect.fetch.User");
Method ms[] = clazz.getMethods();
//Method ms[] = clazz.getDeclaredMethods();
for(int i=0;i<ms.length;i++){//遍历所有的方法
Method m = ms[i];
System.out.println("name: "+ m.getName() );//获得方法名
//System.out.println("annotation: "+ m.getAnnotations() );//获得注解
System.out.println("ReturnType: "+ m.getReturnType() ); //获得返回类型
System.out.println("DeclaringClass:"+ m.getDeclaringClass());//获得该类所属声明类
Class paramTypes[] = m.getParameterTypes();//获得参数类型
for(Class c:paramTypes){
System.out.println("param>> "+c);
}
/*获取泛型
m.getGenericReturnType();//返回类型中的泛型--Class
m.getExceptionTypes(); //异常中的泛型--Class[]
m.getGenericParameterTypes(); //参数中的泛型 ---Class[]
*/
Class exs[] = m.getExceptionTypes();//获得异常
for(int j=1;j<=exs.length;j++){
System.out.println("Execption"+j+":: "+ exs[j-1]);
}
int mod = m.getModifiers();//获得修饰符
System.out.println("modifiers1:"+mod);
System.out.println("modifiers2:"+ Modifier.toString(mod));
System.out.println("--------------------");
}
}
//解析工作方法
@Test
public void fetchConstructors() throws Exception{
Class clazz = Class.forName("hncu.reflect.fetch.User");
//Constructor cons[] = clazz.getConstructors();
Constructor cons[] = clazz.getDeclaredConstructors();
for(int i=0;i<cons.length;i++){
Constructor con=cons[i];
//其方法和解析普通的方法差不多但是没有返回类型,因为构造方法本身就不含返回值
System.out.println("name:"+con.getName());
//System.out.println("annotation:"+con.getAnnotations());
/*获取泛型
con.getExceptionTypes(); //异常中的泛型--Class[]
con.getGenericParameterTypes(); //参数中的泛型 ---Class[]
*/
Class paramTypes[] = con.getParameterTypes();//获得参数类型
for(Class c:paramTypes){
System.out.println("param>> "+c);
}
Class exs[] = con.getExceptionTypes();//获得异常
for(int j=1;j<=exs.length;j++){
System.out.println("Execption"+j+":: "+ exs[j-1]);
}
int mod =con.getModifiers();//获得修饰符
System.out.println("modifiers1:"+mod);
System.out.println("modifiers2:"+ Modifier.toString(mod));
System.out.println("--------------------");
}
}
//解剖属性
@Test
public void fetchFields() throws Exception{
Class clazz=Class.forName("hncu.reflect.fetch.User");
Field fild[]=clazz.getDeclaredFields();
for(int i=0;i<fild.length;i++){
Field fld=fild[i];
System.out.println("name:"+fld.getName());;
System.out.println("DeclaringClass:"+fld.getDeclaringClass());
System.out.println("Type:"+fld.getType());
int mod=fld.getModifiers();
System.out.println("modify:"+Modifier.toString(mod));
System.out.println("----------------------");
}
}