# variable Anzahl von Objektinstanzen zur Laufzeit erstellen



## Netzgeist (4. Okt 2010)

Hi,
als Teil eines Problemes muss ich eine erst zur Laufzeit bekannte Anzahl von Instanzen eines Objektes erstellen(lassen). Bisher tat ich das so:



```
for (int i = 0; i < userinput; i++) {
  new MyObj().start();
}
```

Nun hab ich das Problem, einige der erstellten Objektinstanzen ansprechen zu müssen. Also sowas wie:

```
void stopAnInstanceOfMyObj(string instancename) {
  instancename.stopDoingSome();
}
```

Da ich den Objektinstanzen aber keine Namen gegeben hab weiss ich nun nicht wie ich aus anderen Methoden drauf zugreifen sollte. Bisher hatte ich in die run() der Objekte einfach Obfragen auf andere Objektmethoden gebaut um sie quasi indirekt zu steuern, aber das wird langsam zu undurchsichtig. Gibts nen Weg wie ich den dynamisch erstellten Objekten auch dynamisch namen erstellen kann?


----------



## andiv (4. Okt 2010)

Indem du die Objekte in einer Liste speicherst und dann über Iteratoren/Indizes darauf zugreifst.


```
List<MyObj> list = new ArrayList<MyObj>();
list.add(new MyObj());
list.get(0).stopDoingSome();
```

Liege ich eigentlich richtig damit, dass alle deine Objekte Threads sind und du alle parallel laufen lässt? Ich verstehe nie warum Leute einerseits mit soetwas komplexem wie Threads arbeiten und andererseits kaum Ahnung von solchen Grundlagen wie Listen haben.


----------



## tfa (4. Okt 2010)

Speichere deine Objekte ("Objektinstanzen" ist irgendwie doppelt gemoppelt) einfach in einem Array eine Liste oder einer anderen Collection. Dann kannst du jederzeit wieder darauf zugreifen.


----------



## JohannisderKaeufer (4. Okt 2010)

Oder wenn es mit Namen sein soll


```
Map<String, MyObj> map = new HashMap<String, MyObj>();
map.put("derName", new MyObj());
map.get("derName").stopDoingSome();
```


----------



## Netzgeist (4. Okt 2010)

Namen sind in meinem Beispiel nicht nötig, ich werde auf andiv's Lösung zurückgreifen. 
Vielen lieben Dank euch 3


----------

