黑马程序员技术交流社区

标题: 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