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());//不帶包名的稱號
//}
/**
*打印類的信息,包含類的成員函數(shù)、成員變量(只獲取成員函數(shù))
*
*@paramobject
*該目標所屬類的信息
*/
publicstaticvoidprintClassMethodMessage(Objectobject){//該類所屬的信息
//要獲取類的信息,首先要獲取類的類類型
Class>class1=object.getClass();//傳遞的是哪個子類的目標,class1便是該子類的類類型
//獲取類的稱號
System.out.println(“類的稱號是:”+class1.getName());
/**
*Method類,辦法目標一個成員辦法便是一個Method目標getMehtod()辦法
*獲取的是一切得public的函數(shù),包含父類繼承的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()+”(“);
//獲取參數(shù)類型
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);
}
}
/**
*打印目標的結構函數(shù)的信息
*
*@paramobject
*/
publicstaticvoidprintConMessage(Objectobject){
Class>class1=object.getClass();
/**
*結構函數(shù)也是目標java.lang.Constructor中封裝了結構函數(shù)的信息
*getConstructors獲取一切的public的結構函數(shù)getDeclaredConstructors得到一切的結構函數(shù)
*/
//Constructor[]cs=class1.getConstructors();
Constructor[]cs=class1.getDeclaredConstructors();
for(Constructorconstructor:cs){
System.out.print(constructor.getName()+”(“);
//獲取結構函數(shù)的參數(shù)列表—>得到的是參數(shù)列表的類類型
Class[]paramTypes=constructor.getParameterTypes();
for(Classclass2:paramTypes){
System.out.print(class2.getName()+”,”);
}
System.out.println(“)”);
}
}
}
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號新時空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務專線/ 400-966-8830
旗下運營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權利。 粵ICP備09033321號