如何重写object的clone
答案:1 悬赏:30 手机版
解决时间 2021-03-31 17:10
- 提问者网友:我们很暧昧
- 2021-03-31 12:30
如何重写object的clone
最佳答案
- 五星知识达人网友:拜訪者
- 2020-12-04 16:17
Clone后的对象指向不同地址。
为什么需要深度clone:super.clone()只能clone对象本身,如果它的属性也是对象则不能被clone,所以要做深度clone,即把其属性也做clone
public class A implements Cloneable{
public ArrayList b = new ArrayList();
public Object clone() throws CloneNotSupportedException{
A a = (A) super.clone();
a.b = (ArrayList) b.clone();
return a;
}
public static void main(String[] args) throws CloneNotSupportedException {
A a = new A();
a.b.add("s");
A b = (A) a.clone();
a.b.add("b");
System.out.println(b.b.size());
}
}
为什么需要深度clone:super.clone()只能clone对象本身,如果它的属性也是对象则不能被clone,所以要做深度clone,即把其属性也做clone
public class A implements Cloneable{
public ArrayList b = new ArrayList();
public Object clone() throws CloneNotSupportedException{
A a = (A) super.clone();
a.b = (ArrayList) b.clone();
return a;
}
public static void main(String[] args) throws CloneNotSupportedException {
A a = new A();
a.b.add("s");
A b = (A) a.clone();
a.b.add("b");
System.out.println(b.b.size());
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯