首页 新闻 搜索 专区 学院

Bean值复制

0
[待解决问题]

我想写一个Bean的值复制,用于对两个Bean的属性值复制;
现在基本数据类型的能够正常复制成功,但关联的对象属性就不行了,请问怎么修改?

public static void copy(Object dest ,Object src){
if(dest.getClass()==src.getClass()){
Field[] destField
= dest.getClass().getDeclaredFields();
Field[] srcField
= src.getClass().getDeclaredFields();
for(int i=0;i<destField.length;i++){
String destFieldName
= destField[i].getName();
String destFieldType
= destField[i].getGenericType().toString();
for(int n=0;n<srcField.length;n++){
String srcFieldName
= srcField[n].getName();
String srcFieldType
= srcField[n].getGenericType().toString();
if(destFieldName.equals(srcFieldName)&&destFieldType.equals(srcFieldType)){
destField[i].setAccessible(
true);
srcField[n].setAccessible(
true);
Object srcobj
= null;
try {
srcobj
= srcField[n].get(src);
if(srcobj!=null){
srcField[n].set(dest, srcobj);
}
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
catch (IllegalAccessException e) {
e.printStackTrace();
}

}
}
}
}
}

 


penwei的主页 penwei | 初学一级 | 园豆:200
提问于:2010-09-05 00:58
< >
分享
所有回答(2)
0

什么结果呀?不能复制吗?引用类型和值类型不同,副本中引用变量和原本中引用变量是指向同一个内存地址的。是不是你改原本的值了,所有副本的值也跟着变了。不知道Java有没有提供Clone方法。

会长 | 园豆:9692 (大侠五级) | 2010-09-08 18:43
就是遍历Hibernate bean中关联对象的每一个属性。并修改属性的值!怎么弄?
支持(0) 反对(0) penwei | 园豆:200 (初学一级) | 2010-09-10 12:47
0

bean都由一个get和set方法,你首先获取所有属性的名字,然后将每个属性的名字的首字母改为大写,与set或get字符串拼接,就获取了bean的set和get方法的名称,然后使用getMethod方法获取对应的Method方法,就可以实现反射动态修改属性值了

消逝の纸屑 | 园豆:205 (菜鸟二级) | 2011-11-23 15:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册