关于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
相关推荐
半旧夜夏7 分钟前
【设计模式】核心设计模式实战
java·spring boot·设计模式
froginwe1119 分钟前
Python 3 输入和输出
开发语言
小何好运暴富开心幸福21 分钟前
C++之再谈类与对象
开发语言·c++·vscode
zhangfeng113333 分钟前
R 导出 PDF 时中文不显示 不依赖 showtext** 的最简方案(用 extrafont 把系统 TTF 真正灌进 PDF 内核)
开发语言·r语言·pdf·生物信息
应用市场44 分钟前
自建本地DNS过滤系统:实现局域网广告和垃圾网站屏蔽
开发语言·php
郝学胜-神的一滴1 小时前
中秋特别篇:使用QtOpenGL和着色器绘制星空与满月
开发语言·c++·算法·软件工程·着色器·中秋
Predestination王瀞潞1 小时前
Python oct() 函数
开发语言·python
生物小卡拉1 小时前
R脚本--PCA分析系列1_v1.0
开发语言·r语言
生物小卡拉1 小时前
R脚本——LefSE分析与可视化-v1
开发语言·r语言
半旧夜夏1 小时前
【Spring】AOP的核心原理配方
java·spring