packagecom.mysec.reflex;
importjava.lang.reflect.Constructor;
importjava.lang.reflect.Field;
importjava.lang.reflect.Method;
//通过反射获取办法信息
publicclassgetMethodUtil{
publicstaticvoidmain(String[]args){
Stringstring=”hell”;
//printClassMethodMessage(string);
//printFieldMessage(string);
printConMessage(string);
}
//publicstaticvoidmain(String[]args){
//Class>c1=int.class;
//Class>c2=String.class;
//Class>c3=double.class;
//Class>c4=Double.class;
//Class>c5=void.class;
//System.out.println(c1.getName());
//System.out.println(c2.getName());
//System.out.println(c2.getSimpleName());//不带包名的称号
//}
/**
*打印类的信息,包含类的成员函数、成员变量(只获取成员函数)
*
*@paramobject
*该目标所属类的信息
*/
publicstaticvoidprintClassMethodMessage(Objectobject){//该类所属的信息
//要获取类的信息,首先要获取类的类类型
Class>class1=object.getClass();//传递的是哪个子类的目标,class1便是该子类的类类型
//获取类的称号
System.out.println(“类的称号是:”+class1.getName());
/**
*Method类,办法目标一个成员办法便是一个Method目标getMehtod()办法
*获取的是一切得public的函数,包含父类继承的getDeclaredMethods()获取的是一切该类声明的办法,不同访问权限
*/
Method[]ms=class1.getMethods();
for(inti=0;i<ms.length;i++){
//得到办法的返回值类型的类类型
Class>returnType=ms[i].getReturnType();
System.out.print(returnType.getName()+””);
//得到办法的称号
System.out.print(ms[i].getName()+”(“);
//获取参数类型
Class[]paramTypes=ms[i].getParameterTypes();
for(Classclass2:paramTypes){
System.out.print(class2.getName()+”,”);
}
System.out.println(“)”);
printFieldMessage(class1);
}
}
/**
*获取成员变量信息
*
*@paramobject
*/
privatestaticvoidprintFieldMessage(Objectobject){
//要获取类的信息,首先要获取类的类类型
Class>class1=object.getClass();//传递的是哪个子类的目标,class1便是该子类的类类型
//获取类的称号
System.out.println(“类的称号是:”+class1.getName());
/**
*成员变量也是目标java.lang.reflect.FieldField类封装了关于成员变量的操作
*getFields()办法获取的是一切的public的成员变量的信息
*getDeclaredFields获取的是该类自己声明的成员变量的信息
*/
//Field[]fs=class1.getFields();
Field[]fs=class1.getDeclaredFields();
for(Fieldfield:fs){
//得到成员变量的类型的类类型
Class>filedType=field.getType();
StringtypeName=filedType.getName();
StringfieldName=field.getName();
System.out.println(typeName+””+fieldName);
}
}
/**
*打印目标的结构函数的信息
*
*@paramobject
*/
publicstaticvoidprintConMessage(Objectobject){
Class>class1=object.getClass();
/**
*结构函数也是目标java.lang.Constructor中封装了结构函数的信息
*getConstructors获取一切的public的结构函数getDeclaredConstructors得到一切的结构函数
*/
//Constructor[]cs=class1.getConstructors();
Constructor[]cs=class1.getDeclaredConstructors();
for(Constructorconstructor:cs){
System.out.print(constructor.getName()+”(“);
//获取结构函数的参数列表—>得到的是参数列表的类类型
Class[]paramTypes=constructor.getParameterTypes();
for(Classclass2:paramTypes){
System.out.print(class2.getName()+”,”);
}
System.out.println(“)”);
}
}
}
广州天河区珠江新城富力盈力大厦北塔2706
020-38013166(网站咨询专线)
400-001-5281 (售后服务热线)
深圳市坂田十二橡树庄园F1-7栋
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服务专线:400-001-5281
长沙市天心区芙蓉中路三段398号新时空大厦5楼
联系电话/ (+86 0731)88282200
品牌服务专线/ 400-966-8830
旗下运营网站:
Copyright © 2016 广州思洋文化传播有限公司,保留所有权利。 粤ICP备09033321号