当我在for循环中尝试一些特殊的东西时,我发现Java似乎并不喜欢将一个匿名数组作为for-each-loop的源:
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”。
这是一个错误吗?
答案 0 :(得分:64)
这将有效:
for (String crt : new String[]{"a","b","c"} ) {
doSomething();
}
答案 1 :(得分:20)
Java语言提供{"a","b","c"}
表单作为快捷方式,但只能在分配期间使用。这可能是为了避免解析过程中可能存在的歧义,在某些位置{}
可以解释为代码块。
正确的做法是诺亚建议new String[]{"a","b","c"}
。
答案 2 :(得分:4)
for (String s : Arrays.asList("a","b","c")) {
hmm(s);
}
答案 3 :(得分:3)
你想要
for (String crt : new String [] {"a","b","c"} ) {
doSomething();
}
我使用IntelliJ并且它表示在for-loop中将结果右侧的“表达式预期”放入,这似乎更准确。
我应该补充一点,IntelliJ还提供了为我自动添加“new String []”。