写clone方法时,通常都有一行代码,是什么?

[复制链接]
查看11 | 回复5 | 2008-3-12 18:56:23 | 显示全部楼层 |阅读模式
在我们将一个对象做为参数传给一个函数的时候,我们希望在这个函数中所做的操做,并不会影响到这个对象本身。但是在java传递都是引用,所以往往我们在函数内部改变了对象的某一个值,在函数外面调用该对象的时候,相应的值也同样被改变了
回复

使用道具 举报

千问 | 2008-3-12 18:56:23 | 显示全部楼层
public class A implements Cloneable {
public String name[];
public Vector[B] claB;
public A(){
name=new String[2];
claB=new Vector[B]();
}
public Object clone() {
A o = null;
try {
o = (A) super.clone();
o.name==(String[])name.clone();//深度clone
o.claB=new Vector[B]();//将clone进行到底
for(int i=0;i<claB.size();i++){
B temp=(B)claB.get(i).clone();//当然Class B也要实现相应clone方法
o.claB.add(temp);
}
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}}
回复

使用道具 举报

千问 | 2008-3-12 18:56:23 | 显示全部楼层
object o= new object; object b=o.clone();
回复

使用道具 举报

千问 | 2008-3-12 18:56:23 | 显示全部楼层
super.clone();参考资料:http://www.shangxueba.com/ask/20583.html

已赞过已踩过<
回复

使用道具 举报

千问 | 2008-3-12 18:56:23 | 显示全部楼层
Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。这是什么问题?
回复

使用道具 举报

千问 | 2008-3-12 18:56:23 | 显示全部楼层
我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习我想学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行