Ich kann mich nicht fragen, warum ich so etwas nicht schreiben kann:
%Vor%zum Ausdrucken:
%Vor% Ich meine, 3
könnte in ein Integer
automatisch eingereiht werden, was Iterable
sein könnte.
Ich weiß, ich habe das erste Element als 0
ausgewählt, aber ich nehme an, es ist der übliche Fall und es könnte das Zählen mit solch einem ForEach
Konstrukt erleichtern.
Das ist irgendwie dumm, aber Sie könnten so etwas schreiben:
%Vor%wenn Sie die Methode statisch importieren würden:
%Vor%aus dieser benutzerdefinierten Klasse:
%Vor%Weil eine Zahl kein Bereich ist. Konvertieren einer Zahl in einen Bereich ist mehrdeutig. Es gibt nichts, was Sie daran hindert, eine Range-Klasse zu schreiben, die ist iterierbar ist, zum Beispiel
%Vor%Beachten Sie, dass Sie bei einem solchen Ansatz einfach Funktionen wie die Angabe des Inkrements hinzufügen können, ob der Bereich auf beiden Seiten eingeschlossen ist usw.
In Java wird die foreach -Schleife nur über Arrays oder Sammlungen, die die Iterable -Schnittstelle implementieren, die Wrapper-Typ Integer nicht.
Aber es macht Sinn, wenn Sie darüber nachdenken. Was bedeutet "für jede ganze Zahl i in 3, das tun"? Wie viele Ganzzahlen sind in 3? Beginnen wir bei Null, also gibt es 4 ganze Zahlen (0,1,2,3)? Beginnen wir bei 1? Gehen wir notwendigerweise immer einen Schritt nach dem anderen?
Wenn Sie dieses Verhalten nachahmen möchten, TheOtherGuy Antwort wird funktionieren, aber eine direkte Schleife ist wahrscheinlich noch besser.
In for(x : c)
Syntax muss c ein Iterable
sein; 3
ist nicht.
Sie können
Wie andere bereits festgestellt haben, iteriert Java für jedes Element ein Array oder eine Sammlung. "3" ist kein Array oder eine Sammlung, es ist ein einzelner Wert. Wenn Java das von Ihnen vorgeschlagene Konstrukt zuließ, würde die einzige konsistente Implementierung darin bestehen, über den einzelnen Wert 3 zu "iterieren". Das heißt:
%Vor%würde ausgeben:
%Vor%Was nicht sehr nützlich scheint, weshalb sie es wahrscheinlich nicht implementiert haben.
Ihre Frage geht davon aus, dass ein einzelner Wert wie "3" einen Bereich impliziert. Aber warum nimmst du {0,1,2,3} an? Warum nicht {1,2,3}? Oder {-3, -2, -1, 0, 1, 2, 3}? Oder {0.5, 1.0, 1.5, 2.0, 2.5, 3}? Oder eine buchstäblich unendliche Anzahl anderer möglicher Variationen.
Um es konkret zu machen, müssten Sie den Anfangswert, den Endwert und das Inkrement angeben. Hmm, vielleicht könnten wir uns eine Notation ausdenken:
%Vor%Aber das ist immer noch zweideutig. Es ist nicht klar, ob wir fortfahren wollen bis i == 3 oder bis zum letzten Wert & lt; 3. Und wir müssen wahrscheinlich ein Plus-Inkrement von einem Minus-Inkrement unterscheiden. Wie wäre es mit dieser flexibleren Schreibweise:
%Vor%Oh, warte, das wird schon unterstützt. : -)
Tags und Links java foreach primitive-types