首先来创建两个bean
注:一定要有set/get方法,成员变量必须要同名

public class User1 {String name;String password;String phone;
/**省略get/set方法**/
}
public class User2 {String name;String password;String phone;
/**省略get/set方法**/
}

1.Spring的BeanUtils(简单易用)

org.springframework.beans.BeanUtils

BeanUtils.copyProperties(源对象,目标对象)
测试方法:

public static void main(String[] args){User1 user1=new User1();user1.setName("user1_name");user1.setPassword("user1_password");user1.setPhone("user1_phone");User2 user2=new User2();BeanUtils.copyProperties(user1,user2);System.out.println(user2.toString());}

执行结果:

User2(name=user1_name, password=user1_password, phone=user1_phone)
注:必须保证同名的两个成员变量类型相同,同名属性一个是包装类型,一个是非包装类型也是可以的

2.Apache的BeanUtils(拓展性强,相对复杂)

org.apache.commons.beanutils.BeanUtils

BeanUtils.copyProperties(目标对象,源对象)
需要引入依赖

    <dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.3</version></dependency>

测试方法:

public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {User1 user1=new User1();user1.setName("user1_name");user1.setPassword("user1_password");user1.setPhone("user1_phone");User2 user2=new User2();BeanUtils.copyProperties(user2,user1);System.out.println(user2.toString());}

执行结果:

User2(name=user1_name, password=user1_password, phone=user1_phone)

commons-beanutils则施加了很多的检验,包括类型的转换,甚至于还会检验对象所属的类的可访问性。BeanUtils能够顺利的完成对象属性值的复制,依赖于其对类型的识别。

原文参考https://www.jianshu.com/p/9b4f81005eb7

转载于:https://www.cnblogs.com/smfx1314/p/10588461.html

使用BeanUitls提高对象拷贝效率相关推荐

  1. linux大文件拷贝,Linux如何提高大文件的拷贝效率

    Linux系统操作中,当你在进行机器直接的拷贝时,遇到大文件的时候非常浪费时间,特别是将文件同时拷贝到多台机器上的时候,那么有什么好的方法能够提高大文件的拷贝效率呢?一起来学习下吧. 你可以从源机器逐 ...

  2. 谈谈Java开发中的对象拷贝

    在Java开发工作中,有很多时候我们需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息.这两个对象实例有可能是同一个类的两个实例,也可能是不同类的两个 ...

  3. 对象拷贝之Apache BeanUtils、Spring的BeanUtils、Mapstruct、BeanCopier、PropertieyUtils对比(深拷贝)

    大多时候时候使用的是Apache或Spring``BeanUtils,今天,我们来看一下一个更高效的属性拷贝方式:BeanCopier. https://github.com/cglib/cglib ...

  4. 【Java基础】对象拷贝

    背景 如果不关注对象引用传递,这必将带来的是悲剧,你将一个对象从一个模块交到了另一个模块而浑然不知,而当另一个模块在修改该对象的内容同时也默默的影响到之前的模块,这是很糟糕的,问题也很难找. 我们如何 ...

  5. improve php,解析提高PHP执行效率

    解析提高PHP执行效率 1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的 ...

  6. 启动转换安装失败 拷贝windows安装文件时出错_男人的生产力工具:极速拷贝 效率神器 TeraCopy精品推荐...

    本文作者:lifeisgood Win系统文件管理器的痛点 多年以来,我一直怀疑Windows是为了降低工作效率.保护办公族健康而存在的.姑且不提漫长的系统启动过程,仅就每日使用频率最高的文件访问和管 ...

  7. java 实例对象拷贝,实例详解java对象拷贝

    这篇文章主要介绍了java对象拷贝详解及实例的相关资料,需要的朋友可以参考下 java对象拷贝详解及实例 Java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:@T ...

  8. 如何使用Arthas提高日常开发效率?

    简介: 1. Arthas有什么功能,怎么用,请看:Arthas使用手册 2. Arthas命令比较复杂,一个帮助生成命令的IDEA插件:arthas idea plugin 使用文档 3. 基于Ar ...

  9. “智慧停车+智慧交通”提高市民出行效率和体验

    公司介绍 我们是一家智慧停车公司,专注于专业停车场技术研发以及技术服务.主营业务是专业停车场技术研发. 我们公司提出先进的"智慧停车+智能交通"解决方案,以大数据平台架构.人工智能 ...

最新文章

  1. JAVA常见算法题(三十二)---找规律
  2. 未能加载文件或程序集“xxx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集...
  3. SpringMVC流程图示
  4. 代码生成工具之界面快速生成
  5. Cocos2d-x 3.0 简捷的物理引擎
  6. python多项式回归_在python中实现多项式回归
  7. 【sping揭秘】18、使用spring访问数据
  8. Enumerator yielder.yield 与 Proc.yield 区别
  9. 我的 fedora 14 安装备忘
  10. python 线性插值处理_详解Python实现线性插值法
  11. android定位4g不准,定位不准/失败的处理方法
  12. 超大图片的储存/处理/显示
  13. navicat mysql server has gone away_Navicat中MySQL server has gone away错误怎么办
  14. JZOJ【NOI2017模拟3.30】原谅
  15. Selenium应用中使用chrome浏览器时的新手安装教程
  16. APICloud常用
  17. MapboxGL设置地图背景透明
  18. 为什么ps里的液化工具里的部分功能用不了
  19. python-网页请求返回状态码429
  20. android asyc异步获取网络图片为bitmap,异步之AsyncTask(一)

热门文章

  1. sublime php快捷键,分享Sublime Text 3快捷键精华版!
  2. python捕捉线程错误_Pythonrequests多线程抓取出现HTTPConnectionPoolMaxretiresexceeded异常...
  3. 自制简单的小型Linux,自制小型Linux系统
  4. java 新建 api 案列_Java利用webservice创建接口案例源码
  5. python二分查找算法_如何使用python的二分查找算法
  6. c++ stl 容器 迭代器 stl用法示例
  7. cp命令显示进度条_干货|| Linux常用命令大全
  8. sql查找一个范围的值_销售需求丨查找问题
  9. 基于Java+SpringBoot+vue+element实现扶贫助农政策平台系统
  10. 线程等待通知 linux,Java 线程协作 wait(等待)与 notiy(通知)