-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つのノードが同じ次のノードを指すようになるため、必要なものではない場合があります。

また、渡されたノードがそうではないことを確認し、そうである場合はnullスローする必要があります。IllegalArgumentExceptionnull

于 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 に答える