类的解剖(获取类的定义信息)

 



//解析普通的方法
@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("----------------------");

}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值