应用java反射机制打印一个对象Word格式.docx
《应用java反射机制打印一个对象Word格式.docx》由会员分享,可在线阅读,更多相关《应用java反射机制打印一个对象Word格式.docx(17页珍藏版)》请在冰点文库上搜索。
![应用java反射机制打印一个对象Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/2ed69d02-3b71-4e01-8217-2a934badcff3/2ed69d02-3b71-4e01-8217-2a934badcff31.gif)
<
day>
<
weatherinfo="
晴"
img="
0"
temperature="
15.0"
/>
winddirect="
无持续风向"
power="
微风"
/day>
night>
4.0"
/night>
/detail>
2012-11-02"
多云"
1"
13.0"
小雨"
7"
6.0"
2012-11-03"
中雨"
8"
7.0"
雨夹雪"
6"
0.0"
北风"
4~5级"
2012-11-04"
阴"
2"
5.0"
-3.0"
3~4级"
2012-11-05"
-4.0"
2012-11-06"
<
10.0"
2012-11-07"
11.0"
/predict_data>
对应的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;
}
publicNightnight=null;
publicclassNight
}
}
打印结果
{
city_code:
101010100
city_name:
北京
date_time:
00
nodeText:
null
detail[
detail{
date:
2012-11-01
pt:
day{
weather{
img:
info:
晴
temperature:
15.0
wind{
direct:
无持续风向
power:
微风
night{
4.0
2012-11-02
1
多云
13.0
7
小雨
6.0
2012-11-03
8
中雨
7.0
6
雨夹雪
0.0
北风
4~5级
2012-11-04
2
阴
5.0
-3.0
3~4级
2012-11-05
-4.0
2012-11-06
10.0
2012-11-07
11.0
]
下面我把代码分享给大家:
(就两个方法,很简单吧!
)
publicstaticStringobjectToString(Objecto)
StringBuffers=newStringBuffer();
s.append("
{\n"
);
printObject(o,s,"
"
}\n"
returns.toString();
privatestaticvoidprintObject(Objecto,StringBuffers,Stringblank)
Classclazz=o.getClass();
Field[]fields=clazz.getDeclaredFields();
for(inti=0;
i<
fields.length;
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<
Array.getLength(fields[i].get(o));
j++)
{
s.append(blank+"
+fields[i].getName()+"
printObject(Array.get(fields[i].get(o),j),s,blank+"
+"
}
s.append(blank+"
]\n"
}else{
printObject(fields[i].get(o),s,blank+"
}
}else{
s.append(blank+fields[i].getName()+"
:
"
s.append(value+"
\n"
}
}catch(Exceptione){
if(!
fields[i].getName().startsWith("
this"
))
s.append("
null\n"