求助,关于clone

jonkeyjohns 2004-01-20 09:57:09
我有一个类A
class A implements Clonable{
Properties prop=new Properties();
protected Object clone(){
Object o=null;
try{
o=super.clone();
}
catch(CloneNotSupportedException e){
e.printStackTrace();
}
return o;
}
}
A a=new A();
A b=a.clone();
我在操作对象b的prop的时候 对象a中的prop值也跟着变化,是clone没成功吗?
应该如何解决,谢谢
...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonkeyjohns 2004-01-20
  • 打赏
  • 举报
回复
好像final的类不能clone
ok,问题解决了,感谢二位,分不多了,凑合吧
Mystj 2004-01-20
  • 打赏
  • 举报
回复
可以了,只不过你要把new完的实例赋相同的值,为什么不用clone?
jonkeyjohns 2004-01-20
  • 打赏
  • 举报
回复
那如果我还有一个String类型的属性呢,它好像不能clone
我是不是应该new 一个新的?
Mystj 2004-01-20
  • 打赏
  • 举报
回复
对呀,你的prop也是非原始的数据类型,同样需要进一步的克隆!
就是说你的a.prop and b.prop指的是同一个地址。
wobelisk 2004-01-20
  • 打赏
  • 举报
回复
Maybe you need more codes to deal with Properties.clone(), I think it's a shallow clone.
wobelisk 2004-01-20
  • 打赏
  • 举报
回复
that's so-called Deep Clone
wobelisk 2004-01-20
  • 打赏
  • 举报
回复
class A implements Clonable{
Properties prop=new Properties();
public void setProperties(Properties p){
prop=p;
}

protected Object clone(){
Object o=null;
try{
o=super.clone();
}
catch(CloneNotSupportedException e){
e.printStackTrace();
}
((A) o).setProperties((Properties) prop.clone());
return o;
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧