Spring中BeanUtils.copyProperties方法测试

简介:

 

copyProperties顾名思义是复制属性,就是把A对象的属性复制给B对象的与之相同的属性。下面的属性省略Getter,Setter。


public class UserOne
{
 private int id;
 private String name;

 @Override
 public String toString()
 {
  return id + "......." + name;
 }
}

 


public class UserTwo
{
 private int id;
 private String name;
 private String address;

 @Override
 public String toString()
 {
  return id + "......." + name + "........" + address;
 }
}

 

 

public class UserThree
{
 private String id;
 private String name;
 private String address;

 @Override
 public String toString()
 {
  return id + "......." + name + "........" + address;
 }
}

 


import org.springframework.beans.BeanUtils;

public class Test
{
 public static void main(String[] args)
 {
  LessToMore();
  MoreToLess();
  ArgusMisMatch();
 }

 

 // 属性值少的复制给属性值多的,没有被复制到的属性就是该类型的默认值。 结果1......xy......null
 public static void LessToMore()
 {
  UserOne u1 = new UserOne();
  u1.setId(1);
  u1.setName("xy");
  UserTwo u2 = new UserTwo();
  
BeanUtils.copyProperties(u1, u2);
  System.out.println(u2);
 }


 
 // 属性值多的复制给属性值少的。结果1......xy
 public static void MoreToLess()
 {
  UserTwo u2 = new UserTwo();
  u2.setId(1);
  u2.setName("xy");
  u2.setAddress("aa");
  UserOne u1 = new UserOne();

  BeanUtils.copyProperties(u2, u1);
  System.out.println(u1);
 }


 
 //  报错argument type mismatch。u2的id类型是int,u3的id类型是String
 public static void ArgusMisMatch()
 {
  UserTwo u2 = new UserTwo();
  u2.setId(1);
  u2.setName("xy");
  u2.setAddress("aa");
  UserThree u3 = new UserThree();
  
BeanUtils.copyProperties(u2, u3);
  System.out.println(u3);
 }
}

 

总结一下

A对象把与同名且同类型的属性复制给B对象的属性。

没有同名的,B对象的没有被复制值的属性为该类型的默认值。

同名但类型不同,会报错:argument type mismatch

 

 

目录
相关文章
|
算法
OR-tools求解器使用介绍(二)
OR-tools求解器使用介绍(二)
1224 0
|
10月前
|
人工智能 JSON API
阿里云文档智能 & RAG解决方案:提升AI大模型业务理解与应用
阿里云推出的文档智能 & RAG解决方案,旨在通过先进的文档解析技术和检索增强生成(RAG)方法,显著提升人工智能大模型在业务场景中的应用效果。该方案通过文档智能(Document Mind)技术将非结构化文档内容转换为结构化数据,提取文档的层级树、样式和版面信息,并输出为Markdown和Json格式,为RAG提供语义分块策略。这一过程不仅解决了文档内容解析错误和切块丢失语义信息的问题,还优化了输出LLM友好的Markdown信息。方案的优势在于其多格式支持能力,能够处理包括Office文档、PDF、Html、图片在内的主流文件类型,返回文档的样式、版面信息和层级树结构。
529 2
|
存储 人工智能 弹性计算
我“重新”理解的云计算
本文详细阐述了作者自己对“云计算”的新思考,介绍了云计算的起源、算力的演进、算力的应用以及对应的阿里云的相关产品。
333 11
|
Python
Python — 四款表白代码送给喜欢的那个她(他)
【8月更文挑战第10天】仅以此篇文章(4个表白代码,每一个都有不一样的惊喜,代码附上了详细注释,方便大家根据注释修改),祝愿轻舟所有的读者得遇良人;七夕快乐~
3179 8
Python — 四款表白代码送给喜欢的那个她(他)
|
人工智能 物联网 人机交互
未来智能家居技术的发展趋势与挑战
【2月更文挑战第10天】随着人工智能、物联网等技术的快速发展,智能家居正在成为现代生活中不可或缺的一部分。本文探讨了未来智能家居技术的发展趋势与挑战,分析了人机交互、数据安全、生态整合等方面的关键问题,并提出了相应的解决方案和展望。
|
流计算 网络协议 Apache
咱们从头到尾讲一次 Flink 网络流控和反压剖析
文章将从网络流控的概念与背景、TCP的流控机制、Flink TCP-based 反压机制(before V1.5)、Flink Credit-based 反压机制 (since V1.5)、总结与思考等几个方面进行分享。
|
C语言 算法 开发工具
带你读《C语言程序设计教程 第4版》之一:C语言概述
本书介绍利用C语言进行程序设计的基本知识。每章配有大量的习题,便于读者巩固所学知识,掌握程序设计的基本方法和编程技巧。
|
网络安全
宝塔配置ssl证书
1.下载证书2.打开宝塔网站管理3.输入证书信息a.将后缀为.crt的文件使用notepad++打开,将里面的文字复制到第二部的右边框里b.将后缀为.key的文件使用notepad++打开,将里面的文字复制到第二部的左边框里4.保存证书5.部署证书ps:部署成功后打开网页测试下,需要注意防火墙或者安全组放行443端口。
6800 0
|
人工智能 AI芯片
寒武纪推出第二代云端AI芯片,采用16nm工艺性能比上代提升4倍
寒武纪宣布推出第二代云端AI芯片思元270(MLU270)及板卡产品,目标是提供速度更快、功耗更低、性价比更高的AI加速解决方案。
1963 0
|
容器 安全 弹性计算
阿里云智能--基础产品技术月刊 2019年8月
近日,全球信息技术研究机构Gartner发布了2019年云安全技术成熟度曲线报告(Gartner,Hype Cycle for Cloud Security,2019,Jay Heiser,Steve Riley,23 July 2019),首次将机密计算(confidential computing)列入其中,阿里云因在机密计算领域的诸多实践被列为典型厂商,且是亚太唯一云服务商。
5904 0