1 为什么要用 clone ?
在实际编程过程中,我们常常要遇到这种情况:有一个对象 A,在某一时刻 A 中已经包含
了一些有效值,此时可能会需要一个和 A 完全相同新对象 B,并且此后对 B 任何改动都不
会影响到 A 中的值,也就是说,A 与 B 是两个独立的对象,但 B 的初始值是由 A 对象确定
的。在 Java 语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很
多途径,但实现 clone()方法是其中最简单,也是最高效的手段。
2 new 一个对象的过程和 clone 一个对象的过程区别
new 操作符的本意是分配内存。程序执行到 new 操作符时,首先去看 new 操作符后面的
类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函
数,填充对象的各个域,这一步叫做对象的初始化,构造方法返回后,一个对象创建完毕,
可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象。
clone 在第一步是和 new 相似的,都是分配内存,调用 clone 方法时,分配的内存和原对
象(即调用 clone 方法的对象)相同,然后再使用原对象中对应的各个域,填充新对象的
域,填充完成之后,clone 方法返回,一个新的相同的对象被创建,同样可以把这个新对象
的引用发布到外部。
3 clone 对象的使用
3.1 复制对象和复制引用的区别
复制对象复制的是对象本身,复制出来的对象在内存中和原来的对象不是同一个,也是不
同的引用地址。
复制引用就是给原来的对象在创建一个引用,原来的引用和复制出来的引用都是指向同一
如何理解clone对象?
最新推荐文章于 2024-09-10 22:57:23 发布