2016-04-20 4 views
3

オブジェクトの配列を作成するとき、どのように各オブジェクトの内部にコンストラクタの引数を追加できますか?このように:オブジェクトの配列を作成するときのコンストラクタ

foos = new Foo[10]; 

コンストラクタで10個のオブジェクトを作成するにはどうすればよいですか?すべてのオブジェクトのコンストラクタに渡される引数をどこに置くのか分かりません。

+2

を述べたように、あなたがループを使用する必要がありますあなただけの配列を定義し、今はそれをループする必要があり、各要素を 'foos [i] = new Foo(...)'として初期化します。 – SomeJavaGuy

答えて

5
foos = new Foo[10]; 

は、10 Fooインスタンスへの参照を保持できる配列を作成します。ただし、すべての参照はnullに初期化されます。

あなたは、あなたが望むものは何でも引数を指定することができ、その時点で、別途配列の各要素のコンストラクタを呼び出す必要があります:

foos[0] = new Foo (...whatever arguments the constructor requires...); 
... 
2
foos = new Foo[10]; 

これは、配列型Fooを作成している、これは作成されていません次の操作を行い初期化するためのオブジェクト

for(int i=0;i<foos.length; i++){ 
    foos[i] = new Foo (your-argument); 
} 

詳細はArraysを参照

3

これは、複数の要素を保持するためのFoo型の新しい配列オブジェクトの単なる割り当てです。だから、「10」の新しいオブジェクトを作成するために使用すると、オブジェクトを格納する配列を作成する必要があり

foos[0]=new Foo(); //Call constructor here 
. 
. 
. 
foos[10]= new Foo(); //Call constructor here 
0

し、リストをループ追加しながら:あなたはこのような何かをする実際のオブジェクトを作成し、保存するためには、配列の各インデックスに新しいオブジェクト。

int foosSize = 10; 
Foo[] foos = new foos[foosSize]; 

for(int i = 0; i < foosSize; i++) { 
    foos[i] = new Foo(); 
} 

これにより、新しいfooオブジェクトが作成され、作成した配列のインデックスに追加されます。

2

あなたがそうのようなインラインそれを行うことができます。

Foo[] foos = new Foo[] { 
        new Foo(1), 
        new Foo(2), 
        new Foo(10) 
       }; 

などそこら:

Foo[] foos = { 
       new Foo(1), 
       new Foo(2), 
       new Foo(10) 
      }; 
1

はのは、fooのコンストラクタは、このようなものであるので、fooが引数として文字列を取ることにしましょう:

public Foo(String arg){ 
this.arg = arg; 
} 

コンストラクタに渡す必要がある引数が異なる場合は、sepを使用する必要がありますすべての要素の初期化を行います。 @Sanjeevが述べたように、しかし議論を通して。一方、

foos[0]=new Foo(argOne); 
. 
. 
foos[10]= new Foo(argTen); 

あなたの引数は、配列のインデックスにに関連している場合、@Sumitは

for(int i=0;i<foos.length; i++){ 
    foos[i] = new Foo (arg + i); 
} 
関連する問題