如何构建复制构造函数到CharNode

时间:2013-01-12 11:30:37

标签: java

这是我的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;

我需要构建复制约束器,我该怎么做?

2 个答案:

答案 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;        
}

另见Prototype pattern