2017-04-05 11 views
0

ここに私の試みどのように同じクラスの2つのコンストラクタを作成し、二回目で値パスに作用する

public class blah { 

HashSet<something> blah;  

public Blah() { 
    this.blah = new HashSet<something>(); //this is empty constructor of something 

} 

です//私は新しい何とか

public Blah(Blah initialBlah) { 
    initialBlah = new Blah(); 
      // MAKE DEEP COPIES HERE 
      for (something c : blah){ 
       initialBlah.add(c); 
      } 

     } 
に公開何とかのすべての要素をコピーしたいです

私はそれを試みましたが、正しくありません。HashSet newBlah = new HashSet();

+0

[前の質問](http://stackoverflow.com/questions/64036/how-do-you-make-a-deep-オブジェクトのJavaでのコピー)?これまでは参照をコピーするだけです。 –

+0

メモリの最初のハッシュセットと同じではない新しいハッシュセットに初期ハッシュセットの内容をコピーするにはどうすればよいですか? – Reboot

答えて

0

参照をコピーするだけです。新しいBlahオブジェクトを作成するには、コンテンツを完全にコピーする必要があります。これを実現するには、forループの代わりにこれを実行してください。

this.blah = new HashSet<something>(initblah.blah); 
+0

ありがとう、私はハッシュセットに関する別の質問があります。 – Reboot

+0

ありがとう、私はハッシュセットに関する別の質問があります。我々は クラスAがある場合 は、(文字列A、列Bを、INT C) 今は新しいクラス クラスD(){ HashSetの D =新しいHashSetの()の空HashSetのを作る有します。 } クラスD(D initD){ このコンストラクタは私の問題です } – Reboot

関連する問題