2016-04-20 7 views
3

Wenn ich ein Array von Objekten bin zu schaffen, wie kann ich das Argument für den Konstruktor in jedem Objekt hinzufügen? Gefällt mir:Konstrukteurs beim Erstellen eine Reihe von Gegenständen

foos = new Foo[10]; 

Wie mache ich 10 Objekte mit ihren Konstruktoren? Ich verstehe nicht, wo ich die Argumente setzen, die an die Konstruktoren jedes Objekts übergeben werden?

+2

Sie nur das Array definiert, jetzt müssen Sie über sie in einer Schleife und initialisiere jedes Element als 'foos [i] = new Foo (...)'. – SomeJavaGuy

Antwort

5
foos = new Foo[10]; 

erzeugt ein Array, die Verweise auf 10 Foo Instanzen halten kann. Alle Referenzen werden jedoch auf Null initialisiert.

Sie den Konstruktor separat für jedes Element des Arrays nennen muss, an welcher Stelle Sie, was Argument Sie wollen angeben:

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

schaffen kein Array-Typ Foo, dies ist die Schaffung Dies ist Objekt

für Initializing Sie wie folgt:

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

Weitere Informationen finden Sie unter Arrays

3

Dies ist nur die Zuweisung für ein neues Array-Objekt vom Typ Foo, das mehrere Elemente enthält. Um aktuelle Objekt zu erstellen und speichern Sie so etwas wie dies tun:

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

Um also „10“ neue Objekte, die Sie das Array erstellen erstellen müssen die Objekte und dann die Schleife über die Liste zu halten, während das Hinzufügen ein neues Objekt für jeden Index des Arrays.

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

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

Dies erstellt ein neues Foo-Objekt und fügt es dem Index in dem von Ihnen erstellten Array hinzu.

2

Sie können es inline etwa so:

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

Oder etwa so:

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

lassen Sie uns sagen, dass Foo einen String als Argument nehmen, damit der Konstruktor für Foo so etwas wie dieses:

Wenn Argumente, die Sie an die Konstruktoren übergeben müssen, sich voneinander unterscheiden, müssen Sie sep Initialisierung für jedes Element. wie @Sanjeev erwähnt, aber mit einem Argument.

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

auf der anderen Seite, wenn Ihre Argumente auf ein Array-Index beziehen, sollten Sie Schleife verwenden, wie @Sumit

erwähnt
for(int i=0;i<foos.length; i++){ 
    foos[i] = new Foo (arg + i); 
} 
Verwandte Themen