首页 > 其他分享 >BeanUtils.copyProperties这个方法是深拷贝浅拷贝,还是深复制浅复制?

BeanUtils.copyProperties这个方法是深拷贝浅拷贝,还是深复制浅复制?

时间:2023-10-14 09:44:21浏览次数:23  
标签:对象 copyProperties 复制 拷贝 BeanUtils 属性

1、关于BeanUtils.copyProperties方法的拷贝类型,它是浅拷贝哦。这意味着在拷贝对象时,它只会复制对象的引用而不会复制对象的内容。所以,如果原始对象中的某个属性发生改变,拷贝后的对象中的相应属性也会随之改变。当然,如果你希望进行深拷贝或深复制,需要使用其他方法来实现哦

`BeanUtils.copyProperties` 方法来自 Apache Commons BeanUtils 库,用于将一个 JavaBean 的属性值复制到另一个 JavaBean。这个方法执行的是浅拷贝(Shallow Copy)。

### 浅拷贝(Shallow Copy)

当使用 `BeanUtils.copyProperties` 方法时,基本数据类型和它们的包装类、以及不可变对象(如 String)会被复制。但如果属性是引用类型(如数组、集合或自定义对象),则只是引用地址被复制,而不会创建一个新的对象。这意味着源对象和目标对象中的这些引用类型属性实际上会指向同一个对象。

### 深拷贝(Deep Copy)与深复制(Deep Clone)

深拷贝或深复制意味着不仅复制对象本身,还会复制对象包含的引用类型属性所指向的所有对象,形成一个完全独立的对象图。

`BeanUtils.copyProperties` 不支持深拷贝。如果你需要深拷贝,你可能需要自己实现,或使用其他库如 Dozer、MapStruct 等。

简而言之,`BeanUtils.copyProperties` 是浅拷贝。

 

 

标签:对象,copyProperties,复制,拷贝,BeanUtils,属性
From: https://www.cnblogs.com/qdcream/p/17763703.html

相关文章

  • 如何免费复制付费页面?
    这里介绍三种免费复制付费页面的方法;1.使用阅读器(1)选中要复制的内容,右键选择阅读器阅读 (2)或在网址前加上“read:”,即可进入阅读器 2.选中所要复制内容,右键选择打印复制完之后取消即可 3.用键盘上的f12键打开开发工具界面或点击右上角三个点打开点击源代码,......
  • CODING 界面全新升级,代码仓库 Rebase 变基合并、批量复制事项等功能上线!
    点击链接了解详情金秋十月,腾讯云CODINGDevOps焕新上线!本次更新,我们不仅推出了全新的用户界面,还推出了一系列重磅产品能力,满足广大用户的日常研发与协作所需。以下是CODING新功能速递,快来看看是否有您期待已久的功能特性:01CODING界面焕新上线,“效率”+“体验”双重升......
  • .NET MAUI播放音频文件,复制资源文件到安装目录。
    .NETMAUI我基本都是参考Android代码改造来的,官方文档=废品。参考:https://blog.csdn.net/wxzjn1027/article/details/82345604需要注意的是,流的加载过程是一个将音频解压为原始16位PCM数据的过程,由一个后台线程来进行处理异步,所以初始化后不能立即播放,需要等待一点时间。有以下......
  • Python - 深拷贝一个带有指向自身引用的列表,会报错么?紧接着用==比较,会报错么?
    问题描述深拷贝一个带有指向自身引用的列表:列表x中有指向自身的引用,因此x是一个无限嵌套的列表。importcopyx=[1]x.append(x)>>x[1,[...]]y=copy.deepcopy(x)>>y[1,[...]] 深拷贝不报错但是我们发现深度拷贝x到y后,程序并没有出现stackoverf......
  • mysql复制数据库,数据库排序规则不一致问题
    mysql复制数据库步骤1.导出数据库sql文件mysqldump数据库名-h数据库地址-P数据库端口(3306可省略)-u账号-p密码--add-drop-table>/路径/sql文件名.sql 2.确认导出和导入数据库编码和排序规则是否一致showglobalvariableslike'%coll%'showglobalvariabl......
  • 浅谈深拷贝和浅拷贝
    深拷贝和浅拷贝深拷贝importcopylist1=[1,2,3,4,[5,6,7]]list2=copy.deepcopy(list1)print(list1)print(list2)[1,2,3,4,[5,6,7]][1,2,3,4,[5,6,7]]list1[0]+=1print(list1)print(list2)[2,2,3,4,[5,6,7]][1,2,3,4,[5,6,7]]list1[4]......
  • Vue自定义指令实现复制功能
    importVuefrom'vue'importstorefrom'../store'functioncopyMethod(value){lettext=''switch(typeofvalue){case'number':text=value.toString()breakcase'object':text=JSON......
  • KingbaseES V8R6集群运维案例之---查看主备流复制之间的延迟
    案例说明:在主备流复制集群运维过程中,对于同步复制节点,在读写分离环境应用需要强一致性访问时,需要监控主备之间流复制的延迟。适用版本:KingbaseESV8R6一、主库查询流复制延迟1、通过sys_stat_replication获取sent_lsn、write_lsn、flush_lsn、replay_lsn获取备库延迟信息......
  • 过滤复制
    1.先配置多实例#创建多实例目录mkdir-p/data/330{7,8,9}/data#初始化多实例数据mysqld--initialize-insecure--user=mysql--basedir=/app/mysql--datadir=/data/3307/datamysqld--initialize-insecure--user=mysql--basedir=/app/mysql--datadir=/data/3308/dat......
  • org.springframework.beans.BeanUtils
     {//拷贝对象的属性Hellouser1=newHello();user1.setId(1);user1.setName("name");Hellouser2=newHello();BeanUtils.copyProperties(user1,user2);System.out.printl......