Java Verständnisproblem eines Operators in einer For Schleife

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Kann mir jemand diese Zeile genauer erklären, oder eher das Zeichen ":" in dieser Zeile ?

for(ConHandle handle : new ArrayList(connections))

Also ich bin ja nicht doof und kann einiges an Java nur versteh ich diese For Schleife nicht.
Bedeutet sie für jedes Objekt handle eine neue ArrayList zu erstellen mit allen Informationen die in connections steht ?

Ausserdem gibt mir Netbeans einen Fehler raus, da es ein Objekt erwartet anstatt ConHandle.

Fragen über Fragen und keine Sorge ich gehe nicht mehr zur Schule :D mich interessiert nur die Funktion bzw Absicht dieser Schleife.
 
Das ist eine for-each Schleife. Lässt sich "for each handle in ArrayList" lesen. Den : Operator hat man deswegen genommen, weil man kein neues Keyword einführen wollte.

Die ArrayList muss in dem Beispiel allerdings typisiert sein, was der Compiler auch entsprechend bemäkelt.
 
Wunderbar dankeschön, ich hatte mir sowas schon gedacht, allerdings versteh ich immernoch nicht wieso Netbeans meckert und sagt es erwarte ein Objekt.
in Handler wird ein Socketobjekt erzeugt.

Naja ich such dann mal weiter.

@soares
Die ArrayList ist ja typisiert private ArrayList<ConHandle> connections = new ArrayList()
 
Vielleicht an einer anderen Stelle im Quelltext, aber nicht in der Schleife! Zumindest nicht, wenn bei Dir im Quelltext das steht, was Du hier gepostet hast.
 
Ja das war es, hab ich grad selbst rausgefunden.
Ich dacht es reicht wenn ich es oben im Kopf der Klasse deklariere.

Wunderbar Problem gelöst danke euch ;)
 
private ArrayList<ConHandle> connections = new ArrayList() reicht nicht.

private ArrayList<ConHandle> connections = new ArrayList<ConHandle>()
 
Redirion schrieb:
for(ConHandle handle : connections)

DJ_We$t schrieb:
Ja das war es, hab ich grad selbst rausgefunden.
Ich dacht es reicht wenn ich es oben im Kopf der Klasse deklariere.

Wunderbar Problem gelöst danke euch ;)


Nein nein, ... du erzeugst ja, warum auch immer im Kopf der Schleife eine neue ArrayList ohne generischen Typen...

Die Lösung von Redirion ist zwar richtig und auch die beste, aber deine wäre auch richtig, wenn du sie so geschrieben hättest.

Code:
for(ConHandle handle : new ArrayList<ConHandle>(connections))
 
Zuletzt bearbeitet:
Zurück
Oben