# Von mehreren Objekten eine Eigenschaft abfragen



## Darius_Raven (15. Mrz 2011)

Hallo,

ich habe schon mehrere Möglichkeiten versucht, jedoch war nichts erfolgreich.

Ich habe mehrere Objekte des selben Typs erstellt und möchte von allen Objekten eine bestimmte Variable bzw. eine bestimmte Eigenschaft abfragen.

Wie kann man das Realisieren?

ich habe sowas ausprobiert:


```
//5 Objekte vom Typ Auto erstellt mit verschiedenen Werten, danach die Abfrage
if ( Auto.getOwn() == 0) {....}
else if (.....){....}
...
...
...
else {...}
```

leider klappt das nicht so, wie ich das dachte. Hoffe mir kann da jemand Helfen.

MfG

Darius


----------



## Murray (15. Mrz 2011)

Stecken denn die 5 Auto-Objekte zusammen in irgendeiner Struktur (Array oder Collection)?


----------



## Darius_Raven (15. Mrz 2011)

Die Objekte wurden so erstellt:

[Java]
Auto fofo = new Auto(.....);
Auto fomo = new Auto(.....);
Auto hoci = new Auto(.....);
...
[/Java]

Dabei hat jedes Objekt aber nicht nur eine Eigenschaft sondern im Gesamten 5 Eigenschaften.

Und von diesen Eigenschaften wollte ich halt eine komplett bei allen Objekten abfragen.

daher meine Überlegung im  ->1. Beitrag


----------



## Murray (15. Mrz 2011)

Wenn man eine Operation auf einer Menge gleichartiger Instanzen ausführen will, dann schreit das geradezu nach for- (oder auch foreach-) Schleife. Das würde aber voraussetzen, dass es irgendetwas gibt, worüber man iterieren kann (also z.B ein Array).


```
Auto[] autos = new Auto[5];
autos[0] = new Auto( ...);
autos[1] = new Auto( ...);
autos[2] = new Auto( ...);
autos[3] = new Auto( ...);
autos[4] = new Auto( ...);

for ( Auto auto : autos) {
  if ( auto.getOwn() == 0) {
     /* ... */
  }
}
```


----------



## Darius_Raven (15. Mrz 2011)

Ok, klinkt logisch, warum ich da nich selbst drauf gekommen bin  !

Geht das aber auch irgendwie anders (da ein Array ja immer eine feste Anzahl voraussetzt, ich aber während der Laufzeit auch Objekte noch hinzugefügt wollte.)?


----------



## Michael... (15. Mrz 2011)

Mittels Vector ;-)
Wobei man heutzutage nach Möglichkeit Klassen aus dem Collection Framework (z.B. ArrayList) verwendet:
Collection (Java 2 Platform SE v1.4.2)


----------



## Darius_Raven (15. Mrz 2011)

Ok, werde ich mir nachher erstmal zu gemüte führen und mich dann nochmal melden, wenn noch Probleme auftreten sollten ^^

Edit:
Habe mir grad den Vector angesehen. Sehe ich das richtig, dass ich einen Vector 
	
	
	
	





```
Vector Auto = new Vector
```
 erstellen kann und dann zB Schreiben könnte 
	
	
	
	





```
Auto.addAll(Autos);
```
 damit dann alle Objekte vom Typ "Autos" in den Vector "Auto" gelegt werden?

Sorry für die Frage, aber ich hab grad nich so viel Zeit, deshalb wollt ich nur schnell fragen ob ich das richtig verstanden hab.

Gruß


----------



## Gastredner (15. Mrz 2011)

Nein, du kannst nicht einfach einen Klassennamen angeben und Java fischt dir dann alle Objekte dieser Klasse aus dem Speicher.
Du musst eine Liste von Auto-Objekten anlegen (nimm am besten ArrayList oder LinkedList, Vector ist nur dann nützlich, wenn du mit mehreren Threads arbeitest), diese mit Autoobjekten befüllen und kannst anschließend über die Objekte in der Liste iterieren:

```
// Immer gegen das Interface implementieren!
List<Auto> autos = new ArrayList<Auto>();
autos.add(new Auto(...));
autos.add(new Auto(...));
autos.add(new Auto(...));
autos.add(new Auto(...));
autos.add(new Auto(...));

// Nun über alle Auto-Objekte in der Liste iterieren und die gewünschten Aktionen durchführen:
for (Auto auto: autos) {
	switch(auto.getOwn()) {
	case 0: //...
			break;
	case 1: //...
			break;
	//...
	}
}
```
Die addAll-Methode dient übrigens dazu, der Liste alle Einträge einer anderen Collection bzw. Liste hinzuzufügen:

```
List<Auto> mehrAutos = new ArrayList<Auto>();
mehrAutos.addAll(autos);	// mehrAutos enthält nun alle Einträge aus autos.
```


----------



## Darius_Raven (15. Mrz 2011)

Super, dann weiß ich jetz, wie ichs machen muss.

Ich bedanke mich bei allen Helfern und erledige somit den Thread.

DANKE :applaus: :toll:


----------



## ARadauer (15. Mrz 2011)

Michael... hat gesagt.:


> Mittels Vector ;-)
> Wobei man heutzutage nach Möglichkeit Klassen aus dem Collection Framework (z.B. ArrayList) verwendet:



Warum sagst du Anfängern das sie eine veraltete API verwenden sollen? Das du eine Zeile drunter auf die ArrayList verweißt wird nix bringen... wie man sieht...


----------



## XHelp (15. Mrz 2011)

ARadauer hat gesagt.:


> Warum sagst du Anfängern das sie eine veraltete API verwenden sollen?



Vector ist doch gar nicht veraltet


----------



## Michael... (15. Mrz 2011)

Hatte heute einen schlechten Tag...
Nebenbei ist Vector ja nicht wirklich veraltet - wird ja fleissig im Swingumfeld genutzt ;-)
Im Gegensatz zur ArrayList ist Vector synchronized. Aber hast Recht heutzutage kommt man eigentlich auch ohne aus.


----------

