黑马程序员技术交流社区
标题:
java中的克隆是怎么回事
[打印本页]
作者:
刘江华
时间:
2011-10-22 14:36
标题:
java中的克隆是怎么回事
对Java克隆不懂,它是怎么回事。
作者:
石宗银
时间:
2011-10-22 16:45
简单说 就是 复制 对象,,得到一个 对象的副本,,包含的 属性 值 与 原对象的 相同
Object 的 clone() 是 受保护的,且 它本身 不实现 Cloneable接口,,所以 当一个类
没有实现 Cloneable 接口,,就直接调用 super.clone() ——这时是调用的Object的clone() ,, 是不可以的
会导致抛出 CloneNotSupportedException 异常,需要先实现 Cloneable 接口,,
如: class A implements Cloneable { public Object clone() { Object obj=null; obj = super.clone(); return obj } }
main(...){ A a = new A(); A b = (A)a.clone(); }
影子克隆: 若还有个类 class B{..} 当在A 类中有属性 public B b = new B();
在克隆后,,会发现,,A类中的 一些基本属性 能被真正克隆,即 在改变 克隆得到的对象里的基本属性值时,,原对象不改变,,
而 在改变 B对象中的属性值 时,,原对象也 改变了,,,,
这样,,这个克隆 就不是真正的克隆了,,
深度克隆: 让 class B也实现Cloneable接口,,实现 clone(),, 在A 调用了super.clone()后,,也把它的属性 b = (Clone)b.clone();
这样引用对象和基本对象都 实现了 克隆。。。。
不能克隆的类: String,Integer,Double等等,,,它们没有实现 Cloneable接口,,且 是final 修饰的类,,
详细请看:http://www.blogjava.net/jerry-zhaoj/archive/2009/10/14/298141.html
作者:
杨杰
时间:
2011-10-22 16:56
本帖最后由 杨杰 于 2011-10-22 16:57 编辑
好吧,这里有篇博客,很详细。http://dcriori.iteye.com/blog/397259
作者:
咖啡
时间:
2011-10-22 21:55
就是复制的意思
作者:
刘江华
时间:
2011-10-23 16:43
谢谢。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2