Java:for-each-loop中的"匿名"数组

Atm*_*ons 36 java arrays foreach

当我在for循环中尝试一些特殊的东西时,我发现Java似乎并不喜欢将一个匿名数组作为for-each-loop的源代码:

for (String crt : {"a","b","c"} ) {
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

实际上不起作用

String[] arr = {"a","b","c"};
for (String crt : arr ) {
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

确实.

即使将数组转换为String []也无济于事.将光标移到第一个版本上时,eclipse告诉我:

Type mismatch: cannot convert from String[] to String 而意思是"crt".

这是一个错误吗?

noa*_*oah 66

这将有效:

for (String crt : new String[]{"a","b","c"} ) {
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*tle 20

Java语言将{"a","b","c"}表单作为快捷方式提供,但只能在赋值期间使用.这可能是为了避免解析过程中可能出现的歧义,在某些位置{}可能会被解释为代码块.

正确的做法是诺亚建议的方式new String[]{"a","b","c"}.

  • 请注意,所有作业都不允许使用该简短表格.仅在初始化时允许. (5认同)