克隆一个完全一样的对象
此篇文章针对初学者,大神略过
日常工作中可能会遇到这样的需求,克隆一个完全一样的对象,那么疑问来了什么是完全一样的对象,怎么克隆对象呢?
基本类型:
创建a和b,并赋值
int a;
int b =10;
a = b;
所以:
System.out.println(a==b);
输出:
true
换成引用类型
public class A {
int index;
public A(){
index = 100;
}
}
测试
A a1 = new A();
A a2;
a2 = a1;
System.out.pringln(a1.equals(a2));//true
System.out.pringln(a1);//B@1e127982
System.out.pringln(a2);//B@1e127982
//引用地址相同,所有这种方式不适合引用类型,"="只是传递了引用地址,堆中并没有重新开辟空间
正确的方式
public class A implements Cloneable{
int index;
public A(){
index = 100;
}
@Override
protected A clone() {
try {
return (A)super.clone();
} catch (CloneNotSupportedException e) {
System.out.println(e);
return null;
}
}
}
1.必须实现Cloneable接口
否则:会报java.lang.CloneNotSupportedException:异常
2.重写 clone 方法
测试
A a1 = new A();
A a2 = a1.clone();
System.out.println(a1);
System.out.println(a2);
a2.index = 200;
System.out.println(a1.index);
System.out.println(a2.index);
System.out.println(a1.equals(a2));
输出
com.obj.A@617faa95
com.obj.A@1e127982
100
200
false
内容还不是很完善,还需要补充原理等知识,后边有时间在进行补充