使用BeanUtils

@Data
@Builder
public class People {private String name;private Integer age;private Date date;public People(String name, Integer age, Date date) {this.name = name;this.age = age;this.date = date;}
}
@Data
@ToString
public class User {private String name;private Integer age;private Date date;
}
  People people = new People("zhangsan", 12, date);User user = new User();BeanUtils.copyProperties(people,user);

重写GET改变User中date返回类型

@Data
@ToString
public class User {private String name;private Integer age;private Date date;public String getDate() {if (date != null) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");return simpleDateFormat.format(date);}return "";}
}

底层实现

 public static void main(String[] args) throws Exception {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");Date date = simpleDateFormat.parse("2021-12-07");// 封装date类型的PeoplePeople people = new People("zhangsan", 12, date);User user = new User();// 拿到date类型的类Class<?> clzPeople = people.getClass();// 拿到要赋值的类Class<?> clzUser = user.getClass();// 获取实体类的所有属性,返回Field数组Field[] fields = clzPeople.getDeclaredFields();for (Field field : fields) {//  打印所有属性类型System.out.println(field.getGenericType());//  获取属性名称String name = field.getName();//  属性名首字母大写用于拼接get\set 方法String methodName =  Character.toUpperCase(name.charAt(0)) + name.substring(1);//  打印方法名称System.out.println(methodName);//  获取get方法Method method = clzPeople.getMethod("get" + methodName);//  执行方法并获取方法返回值Object arg = method.invoke(people);//  输出方法返回字段System.out.println(arg);// 获取属性类型
//            Class<?> type = clzUser.getDeclaredField("name").getType();// 获取方法返回值类型Type t = method.getAnnotatedReturnType().getType();// 获取要赋值的set方法Method method1 = clzUser.getMethod("set" + methodName, (Class<?>) t);// 执行方法method1.invoke(user, arg);}System.out.println(user);

BeanUtils.copyProperties()复制对象时改变属性类型相关推荐

  1. 使用BeanUtils.copyProperties进行对象之间的属性赋值

    1.使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get.set方法一个一个属性的赋值 /*** 对象属性 ...

  2. java对象复制到另一个对象中_spring: beanutils.copyproperties将一个对象的数据塞入到另一个对象中(合并对象)...

    spring: beanutils.copyproperties将一个对象的数据塞入到另一个对象中(合并对象) 它的出现原因: BeanUtils提供对Java反射和自省API的包装.其主要目的是利用 ...

  3. 你会copying了吗?(Effective C++ 12 复制对象时勿忘其每一个成分)

    12. 复制对象时勿忘其每一个成分 为derived class写copying函数时,必须很小心地复制其base class成分.那些成分往往是private,故无法直接访问它们,应该让derive ...

  4. JS对象中的属性类型、属性定义和属性读取

    理解对象 ES5中的对象是指无序的属性的集合.(属性可以是基本值.对象和函数). 对象的属性类型有两种,一种是数据属性,是数据值的保存位置:另一种是访问器属性,包含getter和setter函数. 1 ...

  5. js控制台打印对象时,属性显示有值,进一步打印属性为空

    控制台在打印对象时,会出现打印值和实际值不一样,或者对象展开和折叠时值不同等情况 这是因为:console.log()输出对象或数组时是在控制台显示一个对象或数组的引用 当打印的对象和数组在打印后进行 ...

  6. 条款12:复制对象时勿忘其每一个部分

    设计良好的面向对象系统会将对象的内部封装起来,只留两个函数负责对象拷贝,即copy构造函数与copy assignment操作符.编译器会在必要的时候为类创建coping函数,并说明这些"编 ...

  7. Beanutils.copyProperties复制参数不为null的属性

    2019独角兽企业重金招聘Python工程师标准>>> 创建一个类,继承BeanUtils类,重写copyProperties,修改里面逻辑 使用: 要解决不讲值为null的字段写进 ...

  8. BeanUtils.copyProperties使用

    BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处 ...

  9. JavaScript 复制对象与Object.assign方法无法实现深复制

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...

  10. BeanUtils.copyProperties()使用详解+在不同包的区别

    一. 两个包下的BeanUtils.copyProperties对比 BeanUtils是开发中常用到的工具类. 而获取这一工具类常用的方法有两种 org.springframework.beans. ...

最新文章

  1. RAID磁盘阵列的原理与RAID0搭建
  2. 从看见到听见,机器人传感能否解决智能制造检测的最后一公里难题?
  3. 【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)...
  4. linux下grub故障(使用光盘进入救援模式)
  5. 位运算的那些奇技淫巧 | 掌(装)握(逼)必备,妙解两道算法题
  6. RabbitMQ从入门到精通
  7. SpringBoot2 参数管理实践,入参出参与校验
  8. 计算一个子网掩码有多少个有效ip地址_一个月有多少个工作日,你会计算了吗?...
  9. python报错cannot import name ‘BeautifulSoup‘ from ‘bs4‘
  10. 深度剖析 | 初学者应该如何学习前端?该怎么学?
  11. DBUtils——handler
  12. 直接插入排序-java
  13. 中国新材料产业应用前景与十四五运营方向分析报告2021年版
  14. 【mmdetection】测试单张图像
  15. FusionStorage原理及组件
  16. 【OpenCV】将图片黑色背景变成透明背景
  17. 影视后期算不算计算机类专业,影视后期是什么意思(后期剪辑属于什么专业)...
  18. 提示:The word is not correctly spelled 解决方法
  19. 工资条: EmailSender部分
  20. 计算机基础作业1,学习平台-北京大学16春计算机基础与应用作业1答案-成人高等教育_成人本科教育报名_远程网络教育学院-江苏学历网报名服务中心...

热门文章

  1. SolidWorks2021导出带材质的OBJ文件
  2. 元素周期表排列的规律_元素周期表是根据什么排列的?
  3. python爬取五百丁ppt模板(有图+有代码)
  4. ThreeJS 实现等值线效果
  5. 我国芯片各细分领域龙头名单
  6. 【建议收藏】手把手教你画一个项目的技术架构图
  7. Python干货:破解40大机器学习面试题(包含初中高级)
  8. android rxbus github,RxBus for Android
  9. 图片放大后很模糊怎么办?
  10. java servlet容器有哪些_Java Web —— servlet 容器