应用java反射机制打印一个对象.docx

上传人:b****0 文档编号:12541210 上传时间:2023-04-20 格式:DOCX 页数:17 大小:16.99KB
下载 相关 举报
应用java反射机制打印一个对象.docx_第1页
第1页 / 共17页
应用java反射机制打印一个对象.docx_第2页
第2页 / 共17页
应用java反射机制打印一个对象.docx_第3页
第3页 / 共17页
应用java反射机制打印一个对象.docx_第4页
第4页 / 共17页
应用java反射机制打印一个对象.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

应用java反射机制打印一个对象.docx

《应用java反射机制打印一个对象.docx》由会员分享,可在线阅读,更多相关《应用java反射机制打印一个对象.docx(17页珍藏版)》请在冰豆网上搜索。

应用java反射机制打印一个对象.docx

应用java反射机制打印一个对象

应用java反射机制打印一个对象

有时候我们需要在程序运行的时候监视一个对象的各个属性的具体的值,比如我就遇到这样的情况,老板要我把一个xml文件中的数据注入到内存中的一个java对象中,程序写完后,调试时就想如果能把注入后的对象的所有属性的值打印出来,那么就能很容易的找出程序中存在的问题,这样就很方便了,所以我就简单的写了一个打印对象的方法。

先看一下列子吧

Xml文件内容:

xmlversion="1.0"encoding="UTF-8"?

>

00">

00">

00">

00">

00">

00">

00">

00">

对应的java类:

(是用反射机制自动生成的,等有时间我把生成java类的的代码和注入的代码都贴出来,本来用java动态编译+反射机制可以实现将xml文件直接生成一个java对象的,但是我考虑到在写代码的时候没有智能提示很容易出错,所以选择自动生成类,再创建对象,再注入值)

classPredict_data{

publicStringcity_code=null;

publicStringcity_name=null;

publicStringdate_time=null;

publicStringnodeText=null;

publicDetail[]detail=null;

publicclassDetail

{

publicStringdate=null;

publicStringpt=null;

publicStringnodeText=null;

publicDayday=null;

publicclassDay

{

publicStringnodeText=null;

publicWeatherweather=null;

publicclassWeather

{

publicStringimg=null;

publicStringinfo=null;

publicStringtemperature=null;

publicStringnodeText=null;

}

publicWindwind=null;

publicclassWind

{

publicStringdirect=null;

publicStringpower=null;

publicStringnodeText=null;

}

}

publicNightnight=null;

publicclassNight

{

publicStringnodeText=null;

publicWeatherweather=null;

publicclassWeather

{

publicStringimg=null;

publicStringinfo=null;

publicStringtemperature=null;

publicStringnodeText=null;

}

publicWindwind=null;

publicclassWind

{

publicStringdirect=null;

publicStringpower=null;

publicStringnodeText=null;

}

}

}

}

打印结果

{

city_code:

101010100

city_name:

北京

date_time:

2012-11-0108:

00

nodeText:

null

detail[

detail{

date:

2012-11-01

pt:

2012-11-0108:

00

nodeText:

null

day{

nodeText:

null

weather{

img:

0

info:

temperature:

15.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

night{

nodeText:

null

weather{

img:

0

info:

temperature:

4.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

}

detail{

date:

2012-11-02

pt:

2012-11-0108:

00

nodeText:

null

day{

nodeText:

null

weather{

img:

1

info:

多云

temperature:

13.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

night{

nodeText:

null

weather{

img:

7

info:

小雨

temperature:

6.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

}

detail{

date:

2012-11-03

pt:

2012-11-0108:

00

nodeText:

null

day{

nodeText:

null

weather{

img:

8

info:

中雨

temperature:

7.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

night{

nodeText:

null

weather{

img:

6

info:

雨夹雪

temperature:

0.0

nodeText:

null

}

wind{

direct:

北风

power:

4~5级

nodeText:

null

}

}

}

detail{

date:

2012-11-04

pt:

2012-11-0108:

00

nodeText:

null

day{

nodeText:

null

weather{

img:

2

info:

temperature:

5.0

nodeText:

null

}

wind{

direct:

北风

power:

4~5级

nodeText:

null

}

}

night{

nodeText:

null

weather{

img:

0

info:

temperature:

-3.0

nodeText:

null

}

wind{

direct:

北风

power:

3~4级

nodeText:

null

}

}

}

detail{

date:

2012-11-05

pt:

2012-11-0108:

00

nodeText:

null

day{

nodeText:

null

weather{

img:

0

info:

temperature:

7.0

nodeText:

null

}

wind{

direct:

北风

power:

3~4级

nodeText:

null

}

}

night{

nodeText:

null

weather{

img:

0

info:

temperature:

-4.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

}

detail{

date:

2012-11-06

pt:

2012-11-0108:

00

nodeText:

null

day{

nodeText:

null

weather{

img:

0

info:

temperature:

10.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

night{

nodeText:

null

weather{

img:

0

info:

temperature:

-4.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

}

detail{

date:

2012-11-07

pt:

2012-11-0108:

00

nodeText:

null

day{

nodeText:

null

weather{

img:

0

info:

temperature:

11.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

night{

nodeText:

null

weather{

img:

0

info:

temperature:

0.0

nodeText:

null

}

wind{

direct:

无持续风向

power:

微风

nodeText:

null

}

}

}

]

}

下面我把代码分享给大家:

(就两个方法,很简单吧!

publicstaticStringobjectToString(Objecto)

{

StringBuffers=newStringBuffer();

s.append("{\n");

printObject(o,s,"");

s.append("}\n");

returns.toString();

}

privatestaticvoidprintObject(Objecto,StringBuffers,Stringblank)

{

Classclazz=o.getClass();

Field[]fields=clazz.getDeclaredFields();

for(inti=0;i

{

try{

Stringvalue=fields[i].get(o).toString();

//判断是不是对象

if(value.indexOf("@")!

=-1)

{

if(value.startsWith("[L"))//如果是数组

{

s.append(blank+fields[i].getName()+"[\n");

for(intj=0;j

{

s.append(blank+""+fields[i].getName()+"{\n");

printObject(Array.get(fields[i].get(o),j),s,blank+"");

s.append(blank+""+"}\n");

}

s.append(blank+"]\n");

}else{

s.append(blank+fields[i].getName()+"{\n");

printObject(fields[i].get(o),s,blank+"");

s.append(blank+"}\n");

}

}else{

s.append(blank+fields[i].getName()+":

");

s.append(value+"\n");

}

}catch(Exceptione){

if(!

fields[i].getName().startsWith("this"))

{

s.append(blank+fields[i].getName()+":

");

s.append("null\n");

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1