-3

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

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

4

2 回答 2

2

复制构造函数引用您需要复制的对象,并使用传入的对象的属性值对其自身进行初始化:

public CharNode(CharNode node) {

     _data = node._data;
     _value = node._value;
     _next = node._next;
}

复制对链中下一个对象的引用可能不是您需要的,因为这会导致 2 个节点指向同一个下一个节点。

此外,您应该检查传入的节点 is notnull并抛出IllegalArgumentExceptionif it is null

于 2013-01-12T11:39:02.037 回答
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;        
}

另请参阅原型模式

于 2013-01-12T11:39:07.697 回答