关于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
相关推荐
天若有情6733 分钟前
【Python】什么是列表推导式?
开发语言·python
xyd陈宇阳14 分钟前
C++ 入门三:函数与模板
开发语言·c++
星之卡比*14 分钟前
前端知识点---闭包(javascript)
开发语言·前端·javascript
东方芷兰22 分钟前
JavaWeb 课堂笔记 —— 03 Vue
java·前端·javascript·vue.js·笔记
oioihoii35 分钟前
C++23新特性详解:迈向更现代化的C++
开发语言·c++·c++23
TT哇1 小时前
【前缀和】矩阵区域和(medium)
java·线性代数·算法·矩阵
JoshuaGraham1 小时前
Java 并发-newFixedThreadPool
java·开发语言
darkchink1 小时前
[LevelDB]Block系统内幕解析-元数据块(Meta Block)&元数据索引块(MetaIndex Block)&索引块(Index Block)
android·java·服务器·c语言·数据库·c++·分布式
iFlyCai1 小时前
Xcode警报“Ignoring duplicate libraries: ‘-lc++’” 警报
开发语言·c++