博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Java深度克隆和浅度克隆的简单说明
阅读量:4657 次
发布时间:2019-06-09

本文共 834 字,大约阅读时间需要 2 分钟。

这个问题一个月之前就想写一下的一直拖到现在囧~~

问题的来源是我在做一次笔试题的时候遇到的这个问题,当时就有点mengbi了…… 后来研究了一下 也给还不知道的同学借鉴一下。

进入正题:

UserInfo user1 = new UserInfo(“漫步”,22);

UserInfo user2 = user1;

这样 user2和user1就指向了同一个UserInfo对象,但是这样带来的问题就是,当你操作user1或者user2的时候都会给对方造成影响。这个时候就可以使用“克隆”:

UserInfo user2 = user.clone();

这样user2就指向了一个新的UserInfo对象,且数据成员和user1相同。到这里 叫做“浅度克隆”

但是新的问题又出现了,clone()只是针对基本数据类型,对于引用类型 比如日期Date还是简单的将对象指过去。所以我们需要进行“深度克隆”:

public class UserInfo implements Cloneable{
public Object clone() throws CloneNotSupportedException { UserInfo clonedUser = (UserInfo) super.clone(); clonedUser.date = (Date) date.clone();//date是数据成员 return clonedUser; } }

这样我们在再进行:

UserInfo user2 = user1.clone();

就不会有问题了。

这就是深度克隆。

嗯……说的有点肤浅,但是大家能看懂就好了。 想要更加详细的了解的可以去大神们的博文看看,只是了解一下的话 我写的就够了。

转载于:https://www.cnblogs.com/codenoodles/p/6421157.html

你可能感兴趣的文章
Python -- pandas
查看>>
jQuery 效果 - 淡入淡出
查看>>
目标文件格式
查看>>
瑞士 -- 德语 德国 -- 德语 卢森堡 -- 德语 奥地利 -- 德语 丹麦 -- 丹麦语 挪威 -- 挪威语 爱尔兰 -- 爱尔兰语 荷兰 -- 荷兰语 比利时 -- 荷兰语...
查看>>
背景颜色设置
查看>>
推荐一款帮助负载均衡/DNS轮询服务器组使用的文件同步工具
查看>>
常用的CSS命名规则
查看>>
约数个数定理&约数和定理
查看>>
Oracle EBS数据定义移植工具:FNDLOAD
查看>>
判素数
查看>>
extjs4.1:两个combobox的联动
查看>>
百度地图瓦片工具:定义坐标
查看>>
jmeter控制器--交替控制器
查看>>
hdu 5365 Run
查看>>
jap _spring _maven
查看>>
IIS principle
查看>>
Oracle 如何对中文字段进行排序
查看>>
第七章 数组实验
查看>>
003_ElasticSearch详解与优化设计
查看>>
windows hosts
查看>>