这样的java反射,怎么实现

fhp0917 2007-04-04 09:56:09
现有一个Object,里面有若干属性以及这些属性所对应的set,get方法,我要把该对象序列化成一个以成对键值为表现的String字符串
例如现有类 User它有 id,name,age,sex四个属性以及这些属性所对应的set,get方法,
我创建一个User的对象:User user = new User(42645,"Jack",12,"male");
我要把user对象序列化为如下的String字符串
<user>
<id>42645</id>
<name>Jack</name>
<age>12</age>
<sex>male</sex>
</user>
这样的功能我如何使用反射的方法实现呢?
...全文
358 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
daniel_kaka 2007-04-05
  • 打赏
  • 举报
回复
方法一:拼凑
public String toString(){
StringBuffer result = new StringBuffer("");
result.append("<user>");
result.append("<id>");
result.append(this.id);
result.append("</id>");
result.append("<name>");
result.append(this.name);
result.append("</name>");
result.append("<age>");
result.append(this.age);
result.append("</age>");
result.append("<sex>");
result.append(this.sex);
result.append("</sex>");
result.append("</user>");

return result.toString();
}

方法二:用xml解析(代码下面写)
flyforlove 2007-04-05
  • 打赏
  • 举报
回复
你的xml里面不是已经指定类的名字了么,用名称作为参数,动态load不就可以了么
fhp0917 2007-04-05
  • 打赏
  • 举报
回复
当然这个我不知道是什么类型的对象可能创建的时候构造器中没有传属性值,而是通过set方法给属性赋值的,我的问题是这个类型是动态的
fhp0917 2007-04-05
  • 打赏
  • 举报
回复
问题是我不知道这个要序列化成xml字符串的类对象是User,也许是Person类的对象
左大神在这 2007-04-05
  • 打赏
  • 举报
回复
shan1119(大天使,卐~解!) 说的有点道理.
fashchina 2007-04-05
  • 打赏
  • 举报
回复
up
shan1119 2007-04-05
  • 打赏
  • 举报
回复
可以构造这样的函数
User user = new User(hp);hp是HashMap,包含User内的所有的属性,然后可以循环hp内的健值来遍历所有的属性

个人观点
shan1119 2007-04-05
  • 打赏
  • 举报
回复
User user = new User(42645,"Jack",12,"male");
-------------------------
如果构造函数是这样写的话,那反射就不好写,
而且,按照这样的写法,构造函数的参数跟类的属性之间的对应关系应该已经确定了的,自需要拼凑起来就可以了,用不到反射。
wdman 2007-04-05
  • 打赏
  • 举报
回复
通过object.getClass()得到,你的object的运行时类型。
通过class.getDeclaredFields(),可以得到该object的所有的filed。
通过field.getName()得到这些field的名字,
通过field.get(object)得到这个field的值,从而可以得到你需要的字符串。

这是用filed来处理,也可以通过Method来处理,查查jdk的api就可以了。

jjhlover 2007-04-04
  • 打赏
  • 举报
回复
帮顶,关注

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧