Java: “Anonyme” de la matrice de dans pour-chaque-boucle
Alors que j'essayais quelque chose de spécial dans la boucle for, j'ai reconnu que Java ne semble pas comme mettre un anonyme de la matrice de droite comme source pour un pour-chaque-boucle:
for (String crt : {"a","b","c"} ) {
doSomething();
}
ne fonctionne pas alors que
String[] arr = {"a","b","c"};
for (String crt : arr ) {
doSomething();
}
n'.
Même le casting du tableau de String[] ne l'aide pas. Lorsque vous déplacez le curseur sur la première version, eclipse me dit:
Type mismatch: cannot convert from String[] to String
tout sens "crt".
Est-ce un bug?
- Quant à "Est-ce un bug?": catb.org/~esr/faq/smart-questions.html#id382249
- Je n'ai pas vraiment demande pour trouvé un bug. Je viens de demander qu'il peut être un bug. Et il est étrange que dans une partie de ce type d'expression œuvres et dans l'autre, il ne le fait pas. Pas très cohérent à mes yeux.
- pour l'enregistrement, @JoachimSauer faisait référence à l'article Ne vous précipitez pas à la réclamation que vous avez trouvé un bug. la mise à jour de l'URL est catb.org/~esr/faq/smart-questions.html#idp5122192
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne:
Le langage Java fournit la
{"a","b","c"}
forme comme un raccourci, mais il est uniquement possible lors de l'affectation. Il est possible que cela soit pour éviter les ambiguïtés possibles lors de l'analyse, dans certaines positions{}
pourrait être interprété comme un bloc de code.La bonne façon de le faire serait de savoir comment noé suggère, avec
new String[]{"a","b","c"}
.Ne sais pas, ce que ce que c'est? 🙂 Dommage il n'y a pas de version succincte. Supposons que vous pourriez utiliser Groovy ou Scala si vous vouliez quelque chose comme ça 🙂
Vous voulez
J'utilise l'Ide, et il est dit de mettre le message "expression attendue" sur le côté droit du côlon dans la boucle for, qui semble plus précis.
Je dois ajouter que IntelliJ propose également d'ajouter le "new String []" automagiquement pour moi.