java中的克隆问题
来源:互联网 发布:新开淘宝 编辑:程序博客网 时间:2024/06/08 15:17
Cloneable问题:
首先 Cloneable是javaAPI中几个标记接口之一 ,它里面没有明确clone这个方法,但是一旦继承了这个借口就可以重写clone()方法,在Object类中是继承了这个借口的,但是Object中的clone()方法有一定局限性。有时候使用起来不方便。
在java中,克隆又分为深克隆和浅克隆。所谓软克隆就是当你所要克隆的对象的数据包含有 对象类型的属性 比如说 A类中的属性含有类型为B类的变量,这样当你复制的时候,克隆对象就只会复制B类型变量的引用,这样的话,就造成了一个问题,原对象和克隆对象的属性B类型变量就指向的是同一个实例对象,当你想修改克隆对象中B类型变量的值时候,就会影响原对象。所以这往往达不到效果。而Object就是采用的浅克隆 。
而深克隆说简单点就是将你A类中B类型变量一起复制了。话不好多说上例子。
public class A implments cloneable{ //要想实现对象的克隆就必须继承cloneable接口 并重写clone()方法
public int i=10; //int类型变量
public B b;
A(int j){
this.b=new B(j);//A的构造方法中 初始化b
}
public A clone(){
A a=(A)super.clone();//深克隆
a.b=(B)a.b.clone();
return a;
}
}
class B implments cloneable{
public int i=9;
B(){
}
public B clone(){
return (B)super.clone();//浅克隆
}
}
总之一句话 深克隆的意思就是重写clone()方法的时候对浅克隆时采用引用复制的方式进行了改变 ,不是复制引用而是复制在内存堆中的位置!
- java中的克隆问题
- java中的克隆
- java中的对象克隆
- java中的克隆
- 关于java中的克隆
- java 中的克隆
- Java中的克隆
- Java中的对象克隆
- java中的深浅克隆
- Java中的克隆
- Java中的深浅克隆
- java中的浅克隆
- Java中的对象克隆
- Java中的克隆
- Java对象克隆问题
- java中的深克隆和浅克隆
- java中的深克隆浅克隆介绍
- JAVA中的深克隆和浅克隆
- 240. Search a 2D Matrix II
- Unity教程之-unity3d移动平台性能优化专题(三):减少面数
- flask装饰器route实现路由功能理解
- 显示图像
- 问题:powerdesigner 打开没有响应,一直卡住
- java中的克隆问题
- ROS下安装和运行SVO数据包和实时详细过程
- Web初学-Web应用细节
- poj 2828 Buy Ticket
- java开发的简易学生成绩管理系统
- 测试
- android五个布局
- 一天学习记录
- 使用GridView显示图片