# Mehrere Objekte einer Klasse automatisch erzeugen



## skappler (29. Nov 2011)

Hallo Community!
Ich habe für eine Art Spiel, eine Klasse "Dot" geschrieben. Nun möchte ich in meinem Programm von außen her bestimmen wieviele Obejekte dieser Klasse erzeugt werden. 
Ich bin mir nicht sicher wie ich das anstellen soll. Mit einer Schleife ist das ja bestimmt möglich, aber ich weiß dann nicht, wie ich im nachhinein die einzelnen Objekte "ansprechen" kann. 

Das Programm soll also beliebig viele Objekte erzeugen, ohne dass ich jedese einzelne von Hand deklarieren muss.

Ich hoffe ihr könnt mir bei meinem Problem helfen.

Gruß skappler


----------



## Gast2 (29. Nov 2011)

Erstell dir eine Liste (oder ein Array) in die du dann die Objekte legst. Per Schleife erstellst du dann die Instanzen und befüllst deine Liste.
Da du dann alle Objekte in der Liste hast kannst du auch später, per Index, wieder auf die Objekte zugreifen.


----------



## skappler (29. Nov 2011)

Danke für die schnelle Antwort!

Sowas habe ich mir auch schon gedacht, aber ich weiß nicht wie ich das praktisch implementiere.


----------



## Gast2 (30. Nov 2011)

```
List<Dot> dots = new ArrayList<Dot>();
for (int i = 0; i < 1000; i++) {
  dots.add(new Dot(i));
}
// ...
Dot fourthDot = dots.get(3);
```
Je nachdem was du später mit den einzelnen Instanzen machen willst kann man sich überlegen wie man die Objekte speichert.


----------



## Vorenus (30. Nov 2011)

Vielleicht mit [c] ArrayList<objekt> [/c], mit den verschiedenen Metohden die es dazu gibt.

Über eine [c]for[/c]-schleife.

Z.B.

```
for (int x : objekt) {
//hier kommt was zumachen ist.
// übergebe dem wert "x" den Inhalt von objekt.
}
```

?


----------



## emailundlos (30. Nov 2011)

@Vorenus, ich glaube du bist etwas rückständig, was die korrekte Syntax anbelangt.
Das Programm ist so nicht in Sicherheit und würde abstürzen.


----------



## emailundlos (30. Nov 2011)

Man weiß doch gar nicht von was für einen typ x ist?!


----------



## Tomate_Salat (30. Nov 2011)

Wieso rückständig und wieso sollte man nicht wissen, welcher Typ [ts=x ist in diesem Fall ein int ;-)]x[/ts] ist?


```
int data[]={1,5,2};

for(int x:data)
	System.out.println(x);
```
funktioniert wunderbar.


----------



## emailundlos (30. Nov 2011)

ja gut. warum jetzt ausgerechnet diese zahlen?ich kenne mich damit nicht aus.


----------



## Tomate_Salat (1. Dez 2011)

ganz einfach, weil es sich hierbei um ein Beispiel handelt ;-). Da hat man freie Wahl, welche Zahlen oder Typen man verwendet


----------



## localhost1 (1. Dez 2011)

```
public static Dot[] giveArrays(int amount)
{
Dot[] dots = new Dot[amount]
for (int i=0;i<amount;i++)
 {
  dots[i]=i;
 }
return dots;
}
```

ACHTUNG : Ungetesteter code, ausserdem weiß ich nicht wie dein Konstruktor von Dot aussieht?


----------



## tfa (1. Dez 2011)

> ACHTUNG : Ungetesteter code


Allerdings, du kannst einem Dot kein int zuweisen. Oder fehlt hier nur der Konstruktoraufruf?


----------



## localhost1 (1. Dez 2011)

localhost1 hat gesagt.:


> ausserdem weiß ich nicht wie dein Konstruktor von Dot aussieht?



 die zuweisungen von dot sind willkürlich; blos damit du sie voneinander unterscheiden kannst


----------



## skappler (1. Dez 2011)

EikeB hat gesagt.:


> ```
> List<Dot> dots = new ArrayList<Dot>();
> for (int i = 0; i < 1000; i++) {
> dots.add(new Dot(i));
> ...



Das sieht ja schon ganz schön aus, allerdings sagt Eclipse "The type List is not generic; it cannot be parameterized with arguments <Dot>"



			
				localhost1 hat gesagt.:
			
		

> ```
> public static Dot[] giveArrays(int amount)
> {
> Dot[] dots = new Dot[amount]
> ...



Wenn ich das richtig verstehe erstellst du hier einen neuen Array Typ? 
Wo musst ich hier dann die einzelnen Elemente deklarieren, also ihren Konstruktor aufrufen?

Der lautet übrigens: Dot(int a, Color b, boolean t, int x1, int y1)


----------



## tfa (1. Dez 2011)

skappler hat gesagt.:


> Das sieht ja schon ganz schön aus, allerdings sagt Eclipse "The type List is not generic; it cannot be parameterized with arguments <Dot>"


Du brauchst  Java 1.5 oder höher und musst  java.util.List nehmen (nicht java.awt.List).

Den Kosntruktor musst du da aufrufen, wo du das Objekt in das Array stecken willst (Zeile 6).


----------



## skappler (1. Dez 2011)

Ok jetzt klappts. Hatte nur java.awt.List importiert.
Vielen Dank!


----------

