Mientras yo estaba tratando de hacer algo especial en bucle for me di cuenta de que Java no parece como poner un anónimo de la matriz de la derecha como el origen de un para-cada-loop:
for (String crt : {"a","b","c"} ) {
doSomething();
}
realmente no funciona mientras
String[] arr = {"a","b","c"};
for (String crt : arr ) {
doSomething();
}
hace.
Incluso la fundición de la matriz de String[] no ayuda. Al mover el cursor sobre la primera versión, eclipse me dice:
Type mismatch: cannot convert from String[] to String
mientras que el significado de «crt».
Es esto un error?
- Con respecto a «Es esto un error?»: catb.org/~esr/preguntas frecuentes/smart-preguntas.html#id382249
- Yo en realidad no reclamación para encontrado un error. Acabo de ask si podría ser un error. Y es extraño que en una parte de este tipo de expresión que funciona y en otro no. No muy constante en mis ojos.
- para el registro, @JoachimSauer se estaba refiriendo a la sección no se apresuran a afirmar que ha encontrado un error. el up-to-fecha de URL es catb.org/~esr/preguntas frecuentes/smart-preguntas.html#idp5122192
Esto va a funcionar:
El lenguaje Java proporciona la
{"a","b","c"}
forma como un acceso directo, pero sólo es posible durante la asignación. Es posible que esto es para evitar posibles ambigüedades durante el análisis, en algunas posiciones{}
podría ser interpretado como un bloque de código.La manera correcta de hacerlo sería cómo noé sugiere, con
new String[]{"a","b","c"}
.No sé, lo que acerca de esto? 🙂 Lástima que no hay una versión sucinta. Supongamos que usted podría utilizar Groovy o Scala si quería nada de eso 🙂
Desea
Yo uso IntelliJ y me dice que ponga el mensaje «la expresión de lo previsto» en el lado derecho del colon en la for-loop, que parece ser más exactos.
Debo añadir que IntelliJ también ofrece a agregar el «new String []» automágicamente para mí.