首页 > 代码库 > java 克隆
java 克隆
1. About
Java中, 对于基本数据类型可以使用"=" 来克隆,此时两个对象除了相等是没有任何关系的;
而对于引用类型, 却不能简单地使用"="来克隆,这与java内存空间使用有关。
java将内存空间分为两块, 即堆和栈。
在栈中保存基本类型和引用变量,在堆中保存对象。
对于引用变量而言,使用"="将修改引用, 而不是赋值堆中的对象,此时两个引用变量将指向同一个对象。
因此,修改一个引用变量将改变另一个引用变量。
2. 浅克隆
如果对象的成员变量都是基本类型, 可以实现浅克隆完成。
对象实现Cloneable接口, 并复写clone()方法
public class A implements Cloneable{ //............. public A clone(){ A a = null; try{ a = (A)super.clone(); }catch(CloneNotSupportedException e { //...... } return a; }}
3. 深克隆
如果对象中包含引用类型变量,需要深克隆
即对象本身实现Cloneable,复写clone()方法;同时可变成员变量也实现Cloneable, 并复写clone()
public class A implements Cloneable{ private C c; //get set //............. public A clone(){ A a = null; try{ a = (A)super.clone(); a.c = c.clone(); }catch(CloneNotSupportedException e { //...... } return a; }}public class C implements Cloneable{ //............. public C clone(){ C c = null; try{ c = (C)super.clone(); }catch(CloneNotSupportedException e { //...... } return c; }}
java 克隆
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。