孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt

孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt

ID:51588162

大小:76.50 KB

頁數(shù):13頁

時間:2020-03-24

孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt_第1頁
孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt_第2頁
孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt_第3頁
孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt_第4頁
孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt_第5頁
資源描述:

《孫衛(wèi)琴《Java面向?qū)ο缶幊獭放涮譖PT--java_base10_refl.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、反射JavaReflectionApi的作用檢查運行時的對象動態(tài)更新字段調(diào)用方法反射主要的類:java.lang.Class;java.lang.reflect.Method;java.lang.reflect.Field;java.lang.Constructor檢查運行時的對象1.通過對象的getClass方法,獲得Class對象2.通過Class對象的getMethods()方法獲得所有的方法3.通過Class對象的getFields()方法獲得所有的public字段Personperson=newPerson();ClasspersonClass=person.getClass(

2、);Method[]personMethords=personClass.getMethods();Field[]personFields=personClass.getFields();動態(tài)訪問對象的字段Field提供了1.getXXX(Object)方法,獲得特定對象的某個字段的值2.setXXX(Object,XXX)來設(shè)置特定對象的個字段的值以上XXX表示數(shù)據(jù)類型動態(tài)訪問對象的字段Personperson=newPerson("linda",10);ClasspersonClass=person.getClass();FieldageField=personClass.getFi

3、eld("age");//設(shè)定person的年齡ageField.set(person,newInteger(12));//獲得person的年齡intage=ageField.getInt(person);System.out.print(age);參看reflect.sample.AccessPersonFields類動態(tài)訪問對象的方法Method提供了Objectinvoke(Objectobj,Object[]args)方法,調(diào)用某個特定對象的方法,如果參數(shù)或返回類型為基本類型,將自動轉(zhuǎn)化為相應(yīng)的包裝類對象動態(tài)訪問對象的方法Personperson=newPerson("lind

4、a",10);ClasspersonClass=person.getClass();Class[]parameterClass=newClass[1];parameterClass[0]=Class.forName("int");MethodsetAgeMethod=personClass.getMethod("setAge",parameterClass);parameterClass=newClass[0];MethodgetAgeMethod=personClass.getMethod("getAge",parameterClass);//設(shè)定person的年齡Objectpara

5、ms[]=newObject[1];params[1]=newInteger(12);setAgeMethod.invoke(person,params);//獲得person的年齡ObjectageObject=getAgeMethod.invoke(person,newObject[0]);intage=((Integer)ageObject).intValue();System.out.print(age);參看reflect.smple.AccessPersonMethods類動態(tài)訪問構(gòu)造方法Constructorc=Person.class.getDeclaredConstru

6、ctor(newClass[]{String.class,int.class});Personp=(Person)c.newInstance(newObject[]{"linda",newInteger(10)});System.out.println(p);參看reflect.smple.ConstructPerson類動態(tài)代理動態(tài)代理是指客戶通過代理類來調(diào)用其它對象的方法動態(tài)代理使用場合:調(diào)試遠(yuǎn)程方法調(diào)用動態(tài)代理客戶代理對象接口代理接口動態(tài)代理步奏1.創(chuàng)建一個實現(xiàn)接口InvocationHandler的類,它必須實現(xiàn)invoke方法publicObjectinvoke(Objectt

7、heProxy,Methodmethod,Object[]params)throwsThrowable{try{Objectretval=method.invoke(targetObj,params);//PrintouttheresultSystem.out.println(retval);returnretval;}catch(Exceptionexc){}}參見DebugProxy.java動態(tài)代理步奏2.創(chuàng)建被代理的類以及接

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。