写clone()方法时,通常都有一行代码,是什么?
来源:互联网 发布:三a甲级数据分析事务所 编辑:程序博客网 时间:2024/05/16 07:47
在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。使用clone()来复制一个对象,clone()从Object类继承。所有具有clone功能的类都有一个特性,那就是它直接或间接地实现了Cloneable接口。
protected native Object clone() throws CloneNotSupportedException;
可以看出它是一个protected方法,所以我们不能简单地调用它;关键字native,表明这个方法使用java以外的语言实现。
对于 object x,
x.clone() != x
x.clone().getClass() == x.getClass()
x.clone().equals(x)
以上返回的值都为true
要说明的有两点:一是拷贝对象返回的是一个新对象,而不是一个引用。二是拷贝对象与用new操作符返回的新对象的区别就是这个拷贝已经包含了一些原来对象的信息,而不是对象的初始信息。
1.浅复制与深复制概念
⑴浅复制(浅克隆):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
⑵深复制(深克隆)
被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。
- 写clone()方法时,通常都有一行代码,是什么?
- 写clone()方法时,通常都有一行代码,是什么?
- 写clone()方法时,通常都有一行代码,是什么?
- 写clone()方法时,通常都有一行代码
- 写clone()方法时,通常有一行什么代码?
- 写 clone() 时通常都有一句缺省的代码是什么?
- 每写一行代码,就有一行代码的自信。
- 飞鸽传书每写一行代码都会有新的成就
- Servlet都有哪些方法?主要作用是什么?
- 一行代码写python
- 第一次创业的人通常都有那些能力缺陷
- 第一次创业的人通常都有那些能力缺陷?
- 国家的历史观通常都有主流价值观的参与
- ZedBoard学习(6)-System Generator实现串口通信(一行HDL代码都不用写)
- 每一行代码都有记录—如何用git一步步探索项目的历史
- CPU是什么?都有哪些标准?
- CleanMyMac3是什么 都有哪些功能
- N011:谨慎覆写clone()方法
- 将另一个进程console输出的内容输出到某内存中去
- 最后的旅程:美公司提供大气层抛撒骨灰服务
- 第八周本周有多少天
- inner join/left join/right join/full join
- 进程控制之exit和waitpid(wait)函数
- 写clone()方法时,通常都有一行代码,是什么?
- django中Html转PDF
- 菜鸟学习Spring——60s使用annotation实现简单AOP
- 将string字符串中的字符转为全部大写或者全部小写
- [Leetcode] Maximum Subarray
- 个人总结openflow与controller
- Python循环语句(while)
- Android ADB的使用方法
- Android NDK的C++11标准支持