关于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
相关推荐
g***55752 分钟前
Java高级开发进阶教程之系列
java·开发语言
鲁正杰10 分钟前
【运维部署】现代化内网穿透与文件共享方案 (Rust)
运维·开发语言·rust
阿达King哥12 分钟前
在Windows11下编译openjdk 21
java·jvm
shark-chili33 分钟前
从操作系统底层浅谈程序栈的高效性
java
2401_876907521 小时前
USB TYPE-C 公头连接器设计规范总结:提升可靠性、降本增效的关键指南
c语言·开发语言·设计规范
额呃呃1 小时前
std::allocator<T>::destroy
开发语言
不知疲倦的仄仄1 小时前
第二天:深入理解 Selector:单线程高效管理多个 Channel
java·nio
期待のcode1 小时前
Java虚拟机栈
java·开发语言·jvm
珂朵莉MM1 小时前
全球校园人工智能算法精英大赛-产业命题赛-算法巅峰赛 2025年度画像
java·人工智能·算法·机器人
芒克芒克1 小时前
本地部署SpringBoot项目
java·spring boot·spring