实用的BeanUtils工具类
对象拷贝工具是否应该被摒弃呢?
其实也不然, 个人感觉还是用的方式是否正确,本工具类提供简单的对象复
制,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工具类相关推荐
- java轻量级并行工具类_16 个超级实用的 Java 工具类
原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...
- BeanUtils工具类,简化数据封装
login.html中form表单的action路径的写法 * 虚拟目录+Servlet的资源路径 BeanUtils工具类,简化数据封装 * 用于封装JavaBea ...
- BeanUtils工具类
BeanUtils工具类,简化数据封装 用于封装JavaBean的 JavaBean:标准的Java类 要求: 1. 类必须被public修饰 2. 必须提供空参的构造器 3. 成员变量必须使用pri ...
- beanutils工具类_16 个超级实用的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- 丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 在前几天的文章<为什么阿里巴巴禁止使用Apache Bean ...
- beanutils工具类_Apache Commons 工具类介绍及简单使用
来源:http://h5ip.cn/9xu3 Apache Commons 工具类大家都有用过,但是可能缺乏系统学习,只用到了一小部分功能,无法发挥极限的价值,肥朝用大白话说就是,一颗好白菜都让猪给拱 ...
- spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...
一.前言 基于spring-beans(4.1.4)的工具类org.springframework.beans.BeanUtils对注入spring对象按照Class实例化instantiateCla ...
- java 工具类命名_给大家详解16个超级实用的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章课工场合肥北大青鸟科海校区的袁老师将介绍Java中使用最频繁及最通用的Java工具类,希望对大家有所帮助. 以下工具类.方法按使用流行度排名,参考数据来 ...
- 16 个超级实用的 Java 工具类
阅读本文大概需要 4 分钟. 出处:alterem juejin.im/post/5d4a25b351882505c105cc6e 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用 ...
- JAVA中实用的一个工具类--Hutool
什么是Hutool Hutool是一个Java工具包,也就是一个工具箱,一个utils集合,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以简单粗暴.Hutool最初是作者项目中&quo ...
最新文章
- safari post 请求接收不到_我是谁?我在哪?我要到哪去?——HTTP请求头
- python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较
- c语言解析xml字符串_Python XML解析和处理(三十二)
- linux ping不允许的操作,linux – ping:sendmsg:不允许操作(有时)
- Wannafly挑战赛10F-小H和遗迹【Trie,树状数组】
- Java文件类String [] list(FilenameFilter fnf)方法,带示例
- 【原/转】UITableview性能优化总结
- java ts流,Windows 合并多个*.ts文件
- 小米笔记本pro版bios经常找不到硬盘
- Python爬虫自学系列(四)
- 014:针对mdk中STM32程序无法使用printf,产生停留BEAB BKPT 0xAB处问题的解决(转)
- 利用CSS3实现图片3D旋转
- 更新:2022 京东双11活动一键自动完成任务脚本app来了
- 今日头条信息流投放:今日头条怎么开户?多少钱?投放需要注意什么
- c语言实现rsa签名验证,C语言openssl库RSA签名
- Mono 3.2 测试NPinyin 中文转换拼音代码
- mongodb系列02-------深入理解索引原理
- 英语不好,能学好计算机吗?
- 线性代数学习笔记8-2:对称矩阵和Hermitian矩阵、共轭转置、正定矩阵
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第34讲:PHP 封装、继承、多态