




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、應(yīng)用 java 反射機(jī)制打印一個(gè)對(duì)象有時(shí)候我們需要在程序運(yùn)行的時(shí)候監(jiān)視一個(gè)對(duì)象的各個(gè)屬性的具體的值, 比如我就遇到 這樣的情況,老板要我把一個(gè) xml 文件中的數(shù)據(jù)注入到內(nèi)存中的一個(gè) java 對(duì)象中,程序?qū)?完后,調(diào)試時(shí)就想如果能把注入后的對(duì)象的所有屬性的值打印出來(lái), 那么就能很容易的找出 程序中存在的問題,這樣就很方便了,所以我就簡(jiǎn)單的寫了一個(gè)打印對(duì)象的方法。先看一下列子吧Xml 文件內(nèi)容:<? xml version="1.0"encoding ="UTF-8" ?>< predict_datacity_code = "
2、101010100"city_name =" 北京"date_time ="2012-11-01 08:00"pt ="2012-11-01 08:00"<detail date ="2012-11-01"<day >< weather info<wind direct</ day >< night >=" 晴" img ="0" temperature ="無(wú)持續(xù)風(fēng)向 " power =&q
3、uot;微風(fēng)"/>="15.0" />< weatherinfo<wind direct</ night >=" 晴" img ="0" temperature ="無(wú)持續(xù)風(fēng)向 " power ="微風(fēng)"/>="4.0" /></ detail >pt ="2012-11-01 08:00"<detail date ="2012-11-02"<day &g
4、t;< weather info<wind direct</ day >< night >=" 多云 " img ="1" temperature="無(wú)持續(xù)風(fēng)向 " power ="微風(fēng)"/>="13.0"/>< weatherinfo<wind direct </ night ></ detail >=" 小雨 " img ="7" temperature="無(wú)
5、持續(xù)風(fēng)向 " power ="微風(fēng)"/>="6.0"/>pt ="2012-11-01 08:00"<detail date ="2012-11-03"<day >< weather info<wind direct</ day >< night >=" 中雨 " img ="8" ="無(wú)持續(xù)風(fēng)向 " powertemperature=" 微風(fēng) " />=
6、"7.0"/>< weatherinfo<wind direct </ night ></ detail >=" 雨夾雪 " img ="6"=" 北風(fēng)" power ="45temperature級(jí)" />="0.0" /><detail date ="2012-11-04"pt ="2012-11-01 08:00"<day >< weatherinfo&
7、lt;wind direct</ day >< night >=" 陰"=" 北風(fēng)"img ="2" temperaturepower ="45 級(jí)" />="5.0"/>< weather info<wind direct</ night ></ detail >晴"北風(fēng) " power ="34 級(jí)" />img ="0" temperature=&quo
8、t;-3.0"/><detail date ="2012-11-05"pt ="2012-11-01 08:00"<day >< weatherinfo<wind direct</ day >< night >晴" =" 北風(fēng)"img ="0" temperaturepower ="34 級(jí)" />="7.0"/>< weather info<wind direct <
9、;/ night</ detail >< detail<day=" 晴"=" 無(wú)持續(xù)風(fēng)向date ="2012-11-06"<weather info<wind direct</ day >< night ><weather info<wind direct</ night ></ detail >img ="0" temperature" power =" 微風(fēng) " />="-4.0
10、"/>pt ="2012-11-01 08:00"=" 晴"=" 無(wú)持續(xù)風(fēng)向" power =" 微風(fēng)" />img ="0" temperature=" 晴" img ="0" temperature=" 無(wú)持續(xù)風(fēng)向" power =" 微風(fēng)" /><detail date ="2012-11-07"pt ="2012-11-01 08:00"
11、;="10.0"="-4.0"/>/><day ><weather info<wind direct</ day >< night >=" 晴" img ="0" temperature=" 無(wú)持續(xù)風(fēng)向" power =" 微風(fēng)" />="11.0"/><weather info<wind direct</ night ></ detail >=&q
12、uot; 晴" img ="0" temperature=" 無(wú)持續(xù)風(fēng)向" power =" 微風(fēng)" />="0.0"/></ predict_data對(duì)應(yīng)的 java 類:(是用反射機(jī)制自動(dòng)生成的, 等有時(shí)間我把生成 java 類的的代碼和注入的代碼都貼出來(lái), 本來(lái) 用 java 動(dòng)態(tài)編譯 + 反射機(jī)制 可以實(shí)現(xiàn)將 xml 文件直接生成一個(gè) java 對(duì)象的,但是我考慮到 在寫代碼的時(shí)候沒有智能提示很容易出錯(cuò),所以選擇自動(dòng)生成類,再創(chuàng)建對(duì)象,再注入值)publicStringdaten
13、ullpublic public public public StringStringDay classpt = null nodeTextday =DaynullnullpublicpublicStringWeathernodeTextweathernullnullpublicclass Weatherclass Predict_datapublicStringcity_code= nullpublicStringcity_name= nullpublicStringdate_time= nullpublicStringnodeText= nullpublicDetaildetail= nu
14、llpublicclassDetailpublicStringimg = null ;publicStringinfo = null ;publicStringtemperature = nullpublicStringnodeText = null ; public publicWind windclass WindnullpublicStringdirectpublicStringpower =publicStringnodeText publicNightnight =null ;publicclassNightnullnullnullpublicpublicString nodeTex
15、tWeather weathernullnullpublicclass Weatherpublic Stringimg = nullpublicStringinfo = null ;publicStringtemperature = nullpublicStringnodeText = null ; public publicWind windclass WindnullpublicStringdirectpublicStringpower =publicStringnodeTextnullnullnull打印結(jié)果city_code:101010100city_name: 北京date_tim
16、e:2012-11-01 08:00nodeText:nulldetaildetaildate:2012-11-01pt:2012-11-01 08:00nodeText:nulldaynodeText:null weatherimg:0 info: temperature:15.0nodeText:null winddirect:power:nodeText:null無(wú)持續(xù)風(fēng)向微風(fēng)nightnodeText:null weatherimg:0 info: temperature:4.0 nodeText:nullwinddirect:無(wú)持續(xù)風(fēng)向power:nodeText:null微風(fēng)det
17、aildate:2012-11-02pt:2012-11-01 08:00nodeText:nulldaynodeText:nullweatherimg:1info:多云temperature:13.0nodeText:nullwinddirect:無(wú)持續(xù)風(fēng)向power:微風(fēng)nodeText:nullnightnodeText:nullweatherimg:7info:小雨temperature:6.0nodeText:nullwinddirect:無(wú)持續(xù)風(fēng)向power:nodeText:null微風(fēng)detaildate:2012-11-03pt:2012-11-01 08:00nodeTex
18、t:nulldaynodeText:nullweatherimg:8info:中雨temperature:7.0nodeText:nullwinddirect:無(wú)持續(xù)風(fēng)向power:微風(fēng)nodeText:nullnightnodeText:nullweatherimg:6info:雨夾雪temperature:0.0nodeText:nullwind北風(fēng)direct:power:45nodeText:null detaildate:2012-11-04pt:2012-11-01 08:00nodeText:nulldaynodeText:nullweatherimg:2info:tempera
19、ture:5.0nodeText:nullwinddirect:power:45nodeText:null北風(fēng)nightnodeText:nullweatherimg:0info:temperature:-3.0nodeText:nullwinddirect:北風(fēng)detailpower:34nodeText:nulldate:2012-11-05pt:2012-11-01 08:00nodeText:nulldaynodeText:nullweatherimg:0info:temperature:7.0nodeText:nullwinddirect:北風(fēng)power:34 nodeText:nu
20、llnightnodeText:nullweatherimg:0info:temperature:-4.0nodeText:nullwinddirect:無(wú)持續(xù)風(fēng)向power:nodeText:null微風(fēng)detaildate:2012-11-06pt:2012-11-01 08:00nodeText:nulldaynodeText:nullweatherimg:0info:temperature:10.0nodeText:nullwinddirect:微風(fēng)無(wú)持續(xù)風(fēng)向power:nodeText:null nightnodeText:nullweatherimg:0info:temperatu
21、re:-4.0nodeText:nullwinddirect:無(wú)持續(xù)風(fēng)向power:nodeText:null微風(fēng)detaildate:2012-11-07pt:2012-11-01 08:00nodeText:nulldaynodeText:nullweatherimg:0info:temperature:11.0nodeText:null winddirect:power:nodeText:null無(wú)持續(xù)風(fēng)向微風(fēng) nightnodeText:nullweatherimg:0 info:temperature:0.0nodeText:nullwinddirect:power:nodeText
22、:null無(wú)持續(xù)風(fēng)向微風(fēng)下面我把代碼分享給大家:public(就兩個(gè)方法,很簡(jiǎn)單吧! )static String objectToString(Object o)StringBuffer s=new StringBuffer();s.append( printObject"n" );(o,s, " " );s.append(return"n" ); s.toString(); privatestatic voidp ri ntObject(Object o,Stri ngBuffer s,Stri ng bla nk)Class clazz=o.getClass();Field fields=clazz.getDeclaredFields(); for(int i=O;i<fields.len gth ;i+)try String value=fieldsi.get(o).toStri n
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司合作投標(biāo)協(xié)議合同范例
- 合作建設(shè)磚廠合同范例
- 農(nóng)村自建住宅買賣合同范例
- 供電設(shè)計(jì)合同范例
- 合同價(jià)款調(diào)整合同范本
- 公司招聘專員合同范本
- 臺(tái)州餐飲加盟合同范本
- 共享飯店合同范例
- 合同范例能當(dāng)正式合同
- 卷閘門質(zhì)保合同范例
- 綠城玫瑰園別墅項(xiàng)目全套樓書圖片29P
- 《陜西省安全生產(chǎn)條例》考核試題
- 大班PPT課件《拍手歌》
- GB/T 10059-2023電梯試驗(yàn)方法
- GB/T 21837-2023鐵磁性鋼絲繩電磁檢測(cè)方法
- 貨物運(yùn)輸服務(wù)投標(biāo)方案(技術(shù)方案)
- 15D500-15D505 防雷與接地圖集(合訂本)
- 2023年高考全國(guó)卷英語(yǔ)完型填空講解 課件 2024屆高考英語(yǔ)一輪復(fù)習(xí)
- 第二章1:公文寫作的構(gòu)成要素
- 單兵隊(duì)列教學(xué)法
- DB14-T 2803-2023 藥品委托儲(chǔ)存配送管理規(guī)范
評(píng)論
0/150
提交評(píng)論