关于BeanUtils.copyProperties是否能正常复制字段【详细版】

话不多说!先总结:

1、字段相同,类型不同(不复制,也不报错)
2、子类父类
(1)子类传给父类(可以正常复制)
(2)父类传给子类(可以正常复制)
3、子类父类(属性类对象)
(1)子类属性传给父类属性(可以正常复制)
(2)父类属性传给子类属性(不复制,也不报错)

具体代码如下:

1、字段相同,类型不同(不复制,也不报错)

java 复制代码
		RequestVO order = new RequestVO();
		order.setLinkId("linkId");
		order.setPayType("1");
		
		RequestVO2 order1 = new RequestVO2();
		BeanUtils.copyProperties(order, order1);
		
		System.out.println(order1.getLinkId());
		System.out.println(order1.getPayType());
java 复制代码
linkId
null

2、子类父类

(1)子类传给父类(可以正常复制)

java 复制代码
		RequestVTest order1 = new RequestVTest();
		order1.setLinkId("linkId1");
		order1.setOrderId("orderId1");
		order1.setPayType("payType");
		
		RequestVO order = new RequestVO();
		BeanUtils.copyProperties(order1, order);
		
		System.out.println(order.getLinkId());
		System.out.println(order.getPayType());
java 复制代码
linkId1
payType

(2)父类传给子类(可以正常复制)

java 复制代码
		OneToManyOrderRequestVTest order1 = new RequestVTest();
		
		RequestVO order = new RequestVO();
		order.setLinkId("linkId1");
		order.setOrderId("orderId1");
		BeanUtils.copyProperties(order, order1);
		
		System.out.println(order1.getLinkId());
		System.out.println(order1.getOrderId());
java 复制代码
linkId1
orderId1

3、子类父类(属性类对象)

(1)子类属性传给父类属性(可以正常复制)

java 复制代码
		UserRequestVO vo = new UserRequestVO();
		UserRequestVO2 vo1 = new UserRequestVO2();
		RequestVTest order1 = new RequestVTest();
		order1.setLinkId("linkId1");
		order1.setOrderId("orderId1");
		vo1.setOrderRequestVO(order1);
		
		BeanUtils.copyProperties(vo1, vo);
		System.out.println(vo.getOrderRequestVO().getLinkId());
		System.out.println(vo.getOrderRequestVO().getOrderId());
java 复制代码
linkId1
orderId1

(2)父类属性传给子类属性(不复制,也不报错)

java 复制代码
		UserRequestVO vo = new UserRequestVO();
		OrderRequestVO order1 = new OrderRequestVO();
		order1.setLinkId("linkId1");
		order1.setOrderId("orderId1");
		vo.setOrderRequestVO(order1);
		
		UserRequestVO2 vo1 = new UserRequestVO2();
		vo1.setOrderRequestVO(new OrderRequestVTest());
		BeanUtils.copyProperties(vo, vo1);
		System.out.println(vo1.getOrderRequestVO().getLinkId());
		System.out.println(vo1.getOrderRequestVO().getOrderId());
java 复制代码
null
null
相关推荐
蓝桉柒75 分钟前
下载idea,用idea输入一个程序
java·ide·intellij-idea
晊晌_h11 分钟前
嵌入式从0到精通——Linux C|TCP 并发服务器实现方案详解
服务器·开发语言·tcp/ip
传奇开心果编程22 分钟前
【Rust入门知识点学与练】第17课:闭包 Closures
开发语言·学习·rust
蓝桉柒733 分钟前
java字面量,变量
java
典典分享指南37 分钟前
一品牌多产品线的 GEO 内容矩阵:从策略到落地
java·c#·bash·symfony
广州灵眸科技有限公司1 小时前
从手动三步到上电即连:4G模组systemd开机自连方案
linux·运维·服务器·开发语言·网络·人工智能·php
今夜有雨.1 小时前
C# 学习文档(零基础入门)
开发语言·学习·c#
用户094248568031 小时前
第3章:OpenJDK从源码到字节码——Class 文件与 javac 管线
java·jvm
软件黑马王子2 小时前
14.事件中心:主要作用和原理
开发语言·前端框架·c#