关于bean间属性拷贝

javaBean间属性拷贝有两种方式。 

1.使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean,代码片段见下
Java代码    收藏代码
  1. Book srcBook = new Book();  
  2. srcBook.setName("爱你是我的错");  
  3.       
  4. Novel novel= new Novel();//小说具有书的属性。  
  5.       
  6. PropertyUtils.copyProperties(novel, srcBook);  
  7.       
  8. // 输出   
  9. // 爱你是我的错  
  10. System.out.println(novel.getName());  

PropertyUtils.copyProperties()将检索源bean中所有的属性,然后将其值分配给目标bean中相同的属性,如果上面的例子中Book bean有一个author属性,类型是Person,这个方法将分配其的references给destBook,也就是说copyProperties()方法不会克隆属性的值.只是拷贝一个对象在内存中的地址而已,看下面的代码片段

Java代码    收藏代码
  1. Person author = new Person();  
  2.     author.setName("小欧");  
  3.           
  4.     Book srcBook = new Book();  
  5.     srcBook.setName("爱你是我的错");  
  6.     srcBook.setAuthor(author);  
  7.           
  8.     Novel novel= new Novel();//小说具有书的属性。  
  9.           
  10.     PropertyUtils.copyProperties(novel, srcBook);  
  11.           
  12.     // 作者的内存地址一样  
  13.     // 作者的内存地址一样  
  14.     if (srcBook.getAuthor() == novel.getAuthor()) {  
  15.         System.out.println("作者的内存地址一样");  
  16.     }  

 

copyProperties()方法也能将Map中的内容分酌给bean,如果key同目标bean的属性名相同的话

Java代码    收藏代码
  1. Map srcMap = new HashMap();  
  2. srcMap.put("name""爱你是我的错");  
  3.       
  4. Book destBook = new Book();  
  5.       
  6. PropertyUtils.copyProperties(destBook, srcMap);  
  7. // 输出  
  8. // 爱你是我的错  
  9. System.out.println(destBook.getName());  

 

2.Cglib提供了类似的功能,以字节码增强的形式

CSDN中已有一篇(http://blog.csdn.net/pengrg166/archive/2007/01/03/1472842.aspx

 

来源:CSDN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值