这是我的CharNode类
public class CharNode
{
private char _data;
private int _value;
private CharNode _next;
public CharNode(char c, int val, CharNode n)
{
_data = c;
_value = val;
_next = n;
}
public CharNode getNext( )
{ return _next; }
public void setNext(CharNode node)
{ _next = node; }
public int getValue()
{ return _value; }
public void setValue(int v)
{ _value = v; }
public char getData()
{ return _data; }
public void setData(char c)
{ _data = c; }
}
我使用这个使用CharNode的类StringList
private CharNode _head;
//Stringlist have constractor
public StringList ()
_head= null;
//and
StringList (charNode node)
_head = node;
我需要构建复制约束器,我该怎么做?
答案 0 :(得分:2)
复制构造函数引用您需要复制的对象,并使用传入的对象的attribuet值自行初始化:
public CharNode(CharNode node) {
_data = node._data;
_value = node._value;
_next = node._next;
}
将引用复制到链中的下一个对象可能不是您需要的 因为这会导致2个节点指向同一个下一个节点。
此外,您应检查传入的节点是否为null
,如果是IllegalArgumentException
,则应抛出null
。
答案 1 :(得分:1)
通常你会从clone()
类实现Object
方法,但由于你是Java的新手,如果你只是实现一个方法就很容易
public MyObject cloneMyObject(MyObject myObject) {
MyObject cloneMyObject = new MyObject();
cloneMyObject.field1 = myObject.field1; //shallow clone
cloneMyObject.field1 = myObject.field1.cloneThisObject(); //deep clone
//and so on;
return cloneMyObject;
}