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

[复制链接]
发表于 2024-12-3 07:39:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
话不多说!先总结:

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

具体代码如下:
1、字段相同,类型不同(不复制,也不报错)
  1.                 RequestVO order = new RequestVO();
  2.                 order.setLinkId("linkId");
  3.                 order.setPayType("1");
  4.                
  5.                 RequestVO2 order1 = new RequestVO2();
  6.                 BeanUtils.copyProperties(order, order1);
  7.                
  8.                 System.out.println(order1.getLinkId());
  9.                 System.out.println(order1.getPayType());
复制代码
  1. linkId
  2. null
复制代码
2、子类父类
(1)子类传给父类(可以正常复制)
  1.                 RequestVTest order1 = new RequestVTest();
  2.                 order1.setLinkId("linkId1");
  3.                 order1.setOrderId("orderId1");
  4.                 order1.setPayType("payType");
  5.                
  6.                 RequestVO order = new RequestVO();
  7.                 BeanUtils.copyProperties(order1, order);
  8.                
  9.                 System.out.println(order.getLinkId());
  10.                 System.out.println(order.getPayType());
复制代码
  1. linkId1
  2. payType
复制代码
(2)父类传给子类(可以正常复制)
  1.                 OneToManyOrderRequestVTest order1 = new RequestVTest();
  2.                
  3.                 RequestVO order = new RequestVO();
  4.                 order.setLinkId("linkId1");
  5.                 order.setOrderId("orderId1");
  6.                 BeanUtils.copyProperties(order, order1);
  7.                
  8.                 System.out.println(order1.getLinkId());
  9.                 System.out.println(order1.getOrderId());
复制代码
  1. linkId1
  2. orderId1
复制代码
3、子类父类(属性类对象)
(1)子类属性传给父类属性(可以正常复制)
  1.                 UserRequestVO vo = new UserRequestVO();
  2.                 UserRequestVO2 vo1 = new UserRequestVO2();
  3.                 RequestVTest order1 = new RequestVTest();
  4.                 order1.setLinkId("linkId1");
  5.                 order1.setOrderId("orderId1");
  6.                 vo1.setOrderRequestVO(order1);
  7.                
  8.                 BeanUtils.copyProperties(vo1, vo);
  9.                 System.out.println(vo.getOrderRequestVO().getLinkId());
  10.                 System.out.println(vo.getOrderRequestVO().getOrderId());
复制代码
  1. linkId1
  2. orderId1
复制代码
(2)父类属性传给子类属性(不复制,也不报错)
  1.                 UserRequestVO vo = new UserRequestVO();
  2.                 OrderRequestVO order1 = new OrderRequestVO();
  3.                 order1.setLinkId("linkId1");
  4.                 order1.setOrderId("orderId1");
  5.                 vo.setOrderRequestVO(order1);
  6.                
  7.                 UserRequestVO2 vo1 = new UserRequestVO2();
  8.                 vo1.setOrderRequestVO(new OrderRequestVTest());
  9.                 BeanUtils.copyProperties(vo, vo1);
  10.                 System.out.println(vo1.getOrderRequestVO().getLinkId());
  11.                 System.out.println(vo1.getOrderRequestVO().getOrderId());
复制代码
  1. null
  2. null
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表