【Ail规约】慎用 Object 类下的 clone 方法拷贝对象
原因:
Object 类下的 clone 方法属于浅拷贝,深拷贝需要重写该方法。
拓展:
1 -> 对象克隆(Clone)
Object 类下的 clone 方法,实现了对对象中各个属性的复制,使用的前提为:
- 实现 Cloneable 接口
- 覆盖 clone() 方法,可见性提升为 public
@Date
public class SeenewStaff implements Cloneable{private String name;private String rank;private Dept dept;// 隐藏相关的 getter/setter/toString 方法 @Overrideprotected Object clone() throws CloneNotSupportedException{return super.clone();}
}@Date
public class Dept{private String deptName;private String deptCode;// 隐藏相关的 getter/setter/toString 方法@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}@Test
public void SeenewStaffTest() throws Exception{Dept rd = new Dept();rd.setDeptName("研发部");rd.setDeptCode("XNTL_YF");tSeenewStaff zs = new SeenewStaff();zs.setName("张三");zs.setRank("P5");zs.setDept(rd);SeenewStaff ls = (SeenewStaff) zs.clone();ls.getDept.setDeptName("人资部");System.out.println(zs.toString);System.out.println(ls.toString);
}
2 -> 浅拷贝与深拷贝
以上代码中 SeenewStaff 模型实体类继承 Cloneable 借口,并重写 clone() 方法,在此时刻实现了浅拷贝。浅拷贝中对象所有的引用属性仍然指向原对象,如果被克隆对象的每一层被指向的对象也实现 Cloneable 借口并覆盖 clone() 方法,则为深拷贝,深拷贝还有通过对象序列化的方式。
【Ail规约】慎用 Object 类下的 clone 方法拷贝对象相关推荐
- java 克隆对象_Java 中如何使用clone()方法克隆对象?
java为什么要 对象克隆: 在程序开发时,有时可能会遇到以下情况:已经存在一个对象A,现在需要一个与A对象完全相同的B 对象,并对B 对象的属性值进行修改,但是A 对象原有的属性值不能改变.这时,如 ...
- [ 转载 ] Java基础10--关于Object类下所有方法的简单解析
关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...
- python中的object是什么意思_Python object类中的特殊方法代码讲解
python版本:3.8class object: """ The most base type """ # del obj.xxx或del ...
- 重写Java Object类中的equals()方法
Java中的Object类中的equals方法 Object类的equals方法 重写Object类的equals()方法 Person类默认继承了Object类,所以可以使用Object类的equa ...
- Object类toString()和equals()方法剖析
Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object. toString()方法 由于toString方法返回的 ...
- JAVA进阶教学之(Object类中的equals方法)
public boolean equals(Object obj){return (this == obj); } 原始equals方法是判断两个对象的内存地址是否相等的(内存地址相等,保存的值也相等 ...
- 关于Java的Object.clone()方法与对象的深浅拷贝,java面试题,java初级笔试题
写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 文章 ...
- Object类中常见的方法
一.Object类中的toString()方法 1. object 默认方法 toString方法,toString() 输出一个对象的地址字符串(哈希code码)! 2.可以通过重写toString ...
- String类中的equals方法与Object类中的equals方法的不同点
1.首先我们看看Object类中的equals方法 public boolean equals(Object obj) {return (this == obj);} 我们可以看出Object类中判断 ...
- 【python object类及其内置方法】
1. object类 object类所有类的父类,默认所有的类都继承至object类 当我们定义一个类,没有指定他的父类时,它默认就是继承了object类 例如 class Student:pass ...
最新文章
- FZU 1889 龟兔赛跑
- 计算机毕设-文献摘要,毕设摘要翻译,要人工翻译,不要电脑网站翻译的。
- 程序员应具备的职业素质
- 刚刚收到的邮件,Google对Admob的收购已经顺利结束
- Linux权限、角色作用
- 借助Sigar API获取CPU相关信息
- java核心技术卷一,二(经典)
- php redis 里面的hscan 第四个参数count很不靠谱
- Python功能实现:为pdf电子书籍生成书签目录
- 美颜SDK的出现给直播和短视频平台带来了哪些影响?
- android DISALLOW_EVIL_CONSTRUCTORS
- 基于java的商城后台管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- 破解CMOS密码和隐藏文件
- 大数据——云服务常用词汇及含义
- HNUST-OJ-2184-huffman编码(1)
- java背包_java-背包的实现
- Docker(六)——使用 bind mounts
- web怎么将dwg转换图片_怎么把CAD图转换成高清jpg图?
- ImageJ如何对图像进行旋转
- oracle 表的碎片化整理
热门文章
- 华为无线网卡无服务器,联通华为无线上网卡连接时连接被终止解决方法 - 小众知识...
- HTML表格制作学习提示
- 商标是否占用查询方法、阿里云商标注册方法
- SQL实现对销售表现重要指标的计算,对用户特征分层看销售贡献,并统计消费的二八法则
- Java UTC(GMT)时间和Date时间转换
- PID控制,matlab/simulink
- 【2019年5月23日】指数估值排名
- 如何关闭H3C的交换机路由器等设备上使用SFP模块时候产生的警告提示
- android平板电脑系统安装程序,小编教你安装安卓平板win 10 1809电脑软件
- Racket 的诞生与发展