我定义这么一个类:
class TreeNode{
String str1;
String str2;
TreeNode treeNode1;
TreeNode treeNode2;
TreeNode(){
str1=null;
str2=null;
treeNode1=null;
treeNode2=null;
}
}
在其他类中
class function{
TreeNode node =new TreeNode();
node.str1="666";
node.str1="777";
TreeNode node2=node的副本;
}请教下,如何在TreeNode中定义克隆函数才能完全复制其对象???
class TreeNode{
String str1;
String str2;
TreeNode treeNode1;
TreeNode treeNode2;
TreeNode(){
str1=null;
str2=null;
treeNode1=null;
treeNode2=null;
}
}
在其他类中
class function{
TreeNode node =new TreeNode();
node.str1="666";
node.str1="777";
TreeNode node2=node的副本;
}请教下,如何在TreeNode中定义克隆函数才能完全复制其对象???
这个根本不是复制,只是引用而已,相当于指针的传递.对象类型赋值都是传递指针,值类型是拷贝赋值的(int,string,char等原始值)
这样是完美的解决方案!String str1;
String str2;
string值要一个一个copy过去的哦
class TreeNode implements Cloneable {
String str1;
String str2;
TreeNode treeNode1;
TreeNode treeNode2;
TreeNode(){
str1=null;
str2=null;
treeNode1=null;
treeNode2=null; public OBject clone(){
TreeNode obj = (TreeNode)super.clone();
if (obj.treeNode1!=null)
obj.treeNode1=(TreeNode)obj.clone();
if (obj.treeNode2!=null)
obj.treeNode2=(TreeNode)obj.clone(); return obj
}
}
在其他类中
class function{
TreeNode node =new TreeNode();
node.str1="666";
node.str1="777";
TreeNode node2=(TreeNode )node1.clone();//node2就是node1的完全副本
}
呵呵,我刚开始没有判断空,结果老是出现问题,还以为是方法不对呢!!!!
String str1;
String str2;
Treenode treeNode1;
Treenode treeNode2;
Treenode(){
str1=null;
str2=null;
treeNode1=null;
treeNode2=null;
}
}
如果你的意思是让node2被创建时和node一样直接就可以
Treenode node2 =node;
若有其他要求继续提出。
TreeNode newNode = new TreeNode();
newNode.str1 = this.str1;
newNode.str2 = this.str2;
if (this.treeNode1!=null)
newNode.treeNode1 = this.treeNode1.clone();
if (this.treeNode2!=null)
newNode.treeNode2 = this.treeNode2.clone();
return newNode;
}
和lz是一样的 我们项目正在做树的深度克隆,学习了一下。