Ответ 1
Это будет работать:
for (String crt : new String[]{"a","b","c"} ) {
doSomething();
}
Пока я пытался что-то особенное для цикла, я понял, что Java, похоже, не любит помещать анонимный массив в качестве источника для каждого цикла:
for (String crt : {"a","b","c"} ) {
doSomething();
}
на самом деле не работает, пока
String[] arr = {"a","b","c"};
for (String crt : arr ) {
doSomething();
}
делает.
Даже приведение массива в String [] не помогает. При перемещении курсора над первой версией eclipse сообщает мне:
Type mismatch: cannot convert from String[] to String
, имея в виду "crt".
Это ошибка?
Это будет работать:
for (String crt : new String[]{"a","b","c"} ) {
doSomething();
}
Язык Java предоставляет форму {"a","b","c"}
как ярлык, но это возможно только при назначении. Это возможно, чтобы избежать возможных двусмысленностей во время разбора, в некоторых позициях {}
можно интерпретировать как кодовый блок.
Правильный способ сделать это будет так, как предлагает noah, с new String[]{"a","b","c"}
.
Не знаю, как насчет этого?:) Жаль, нет лаконичной версии. Предположим, вы могли бы использовать Groovy или Scala, если вам нужно что-то подобное:)
for (String s : Arrays.asList("a","b","c")) {
hmm(s);
}
Вы хотите
for (String crt : new String [] {"a","b","c"} ) {
doSomething();
}
Я использую IntelliJ, и он говорит, что сообщение "выражение ожидается" в правой части двоеточия в цикле for, что кажется более точным.
Я должен добавить, что IntelliJ также предлагает для меня автоматическое добавление "новой строки []".