对象拷贝工具是否应该被摒弃呢?
其实也不然, 个人感觉还是用的方式是否正确,本工具类提供简单的对象复
制,json序列化方式实现对象复制,深层次完成属性的完美复制.
import com.alibaba.fastjson.serializer.SerializerFeature;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;/*** 通用对象工具类*/
public class BeanUtils {/*** 从一个对象拷贝属性到另一个对象中(只拷贝属性相同的字段)** @param dest 目标对象* @param orig 原始对象*/public static void copyProperties(Object dest, Object orig) {try {org.apache.commons.beanutils.BeanUtils.copyProperties(dest, orig);} catch (IllegalAccessException | InvocationTargetException ex) {}}/*** 对象的深拷贝,从一个实体类型转为另一个类型 且只拷贝属性相同的字段* 备注:* 1 如果只是单纯的复制,实体类型没有改变,可以使用deepClone方法* 2 如果被复制的对象为空,则复制为null* 3 支持boolean类型和整型 0,1的转换  0 <-> false  1 <-> true* 4 如果是日期类型转string 或string转日期 需要在日期字段上加 @JSONField注解 并指定format参数为格式化类型* 5 属性名称不一致的字段无法转换,需要get/set方法单独设置值** @param t 被复制的对象* @param clazz 转换成的对象类型* @param <T> 被复制的对象类型的泛型* @param <F> 转换对象类型的泛型* @return 复制后的结果*/public static <T, F> F copyProperties(T t, Class<F> clazz) {String jsonStr = JsonUtils.toJsonString(t);return JsonUtils.parseObject(jsonStr, clazz);}/*** 获取对象的属性值,一般适用于动态获取对象属性值** @param bean 任何对象* @param name 属性名,确保该属性在对象中存在*/public static String getProperty(Object bean, String name) {try {return org.apache.commons.beanutils.BeanUtils.getProperty(bean, name);} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException ex) {}}/*** 给对象赋值,一般适用于动态给对象赋值** @param bean 任何对象* @param name 属性名* @param value 属性的值*/public static void setProperty(Object bean, String name, Object value) {try {org.apache.commons.beanutils.BeanUtils.setProperty(bean, name, value);} catch (IllegalAccessException | InvocationTargetException ex) {}}/*** 对象的深拷贝* @param t 被复制的对象* @param clazz 对象类型* @param <T> 泛型* @return 复制的对象*/public static <T> T deepClone(T t, Class<T> clazz) {String jsonStr = JsonUtils.toJsonString(t, SerializerFeature.WriteClassName);return JsonUtils.parseObject(jsonStr, clazz);}
}

实用的BeanUtils工具类相关推荐

  1. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  2. BeanUtils工具类,简化数据封装

     login.html中form表单的action路径的写法         * 虚拟目录+Servlet的资源路径 BeanUtils工具类,简化数据封装         * 用于封装JavaBea ...

  3. BeanUtils工具类

    BeanUtils工具类,简化数据封装 用于封装JavaBean的 JavaBean:标准的Java类 要求: 1. 类必须被public修饰 2. 必须提供空参的构造器 3. 成员变量必须使用pri ...

  4. beanutils工具类_16 个超级实用的 Java 工具类!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  5. 丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 在前几天的文章<为什么阿里巴巴禁止使用Apache Bean ...

  6. beanutils工具类_Apache Commons 工具类介绍及简单使用

    来源:http://h5ip.cn/9xu3 Apache Commons 工具类大家都有用过,但是可能缺乏系统学习,只用到了一小部分功能,无法发挥极限的价值,肥朝用大白话说就是,一颗好白菜都让猪给拱 ...

  7. spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...

    一.前言 基于spring-beans(4.1.4)的工具类org.springframework.beans.BeanUtils对注入spring对象按照Class实例化instantiateCla ...

  8. java 工具类命名_给大家详解16个超级实用的Java工具类

    在Java中,工具类定义了一组公共方法,这篇文章课工场合肥北大青鸟科海校区的袁老师将介绍Java中使用最频繁及最通用的Java工具类,希望对大家有所帮助. 以下工具类.方法按使用流行度排名,参考数据来 ...

  9. 16 个超级实用的 Java 工具类

    阅读本文大概需要 4 分钟. 出处:alterem juejin.im/post/5d4a25b351882505c105cc6e 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用 ...

  10. JAVA中实用的一个工具类--Hutool

    什么是Hutool Hutool是一个Java工具包,也就是一个工具箱,一个utils集合,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以简单粗暴.Hutool最初是作者项目中&quo ...

最新文章

  1. safari post 请求接收不到_我是谁?我在哪?我要到哪去?——HTTP请求头
  2. python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较
  3. c语言解析xml字符串_Python XML解析和处理(三十二)
  4. linux ping不允许的操作,linux – ping:sendmsg:不允许操作(有时)
  5. Wannafly挑战赛10F-小H和遗迹【Trie,树状数组】
  6. Java文件类String [] list(FilenameFilter fnf)方法,带示例
  7. 【原/转】UITableview性能优化总结
  8. java ts流,Windows 合并多个*.ts文件
  9. 小米笔记本pro版bios经常找不到硬盘
  10. Python爬虫自学系列(四)
  11. 014:针对mdk中STM32程序无法使用printf,产生停留BEAB BKPT 0xAB处问题的解决(转)
  12. 利用CSS3实现图片3D旋转
  13. 更新:2022 京东双11活动一键自动完成任务脚本app来了
  14. 今日头条信息流投放:今日头条怎么开户?多少钱?投放需要注意什么
  15. c语言实现rsa签名验证,C语言openssl库RSA签名
  16. Mono 3.2 测试NPinyin 中文转换拼音代码
  17. mongodb系列02-------深入理解索引原理
  18. 英语不好,能学好计算机吗?
  19. 线性代数学习笔记8-2:对称矩阵和Hermitian矩阵、共轭转置、正定矩阵
  20. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第34讲:PHP 封装、继承、多态

热门文章

  1. Axure RP9授权码
  2. 阿里巴巴java开发编码规范—代码格式
  3. IDEA 设置导入/导出
  4. 分享几个免费的开源邮件服务器软件
  5. AutoCAD LT 2020 for Mac在升级了MacOS 11后打不开了怎么处理?那么教程来了哦
  6. Matlab 检测直线并求解直线方程
  7. 史上最全的HTML、CSS知识点总结,浅显易懂。
  8. 关于内网使用Nginx正向代理发送极光推送
  9. SSM面试题及相关答案
  10. IDEA 设置控制台背景颜色