Java 爪哇语:;“匿名”;为每个循环输入数组

Java 爪哇语:;“匿名”;为每个循环输入数组,java,arrays,foreach,Java,Arrays,Foreach,当我在for循环中尝试一些特殊的东西时,我发现Java似乎不喜欢将匿名数组作为for-each循环的源: for (String crt : {"a","b","c"} ) { doSomething(); } 实际上,这段时间不起作用 String[] arr = {"a","b","c"}; for (String crt : arr ) { doSomething(); } 是的 甚至将数组强制转换为字符串[]也无济于事。当将光标移动到第一个版本上时,eclipse告诉

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

for (String crt : {"a","b","c"} ) {
    doSomething();
}
实际上,这段时间不起作用

String[] arr = {"a","b","c"};
for (String crt : arr ) {
    doSomething();
}
是的

甚至将数组强制转换为字符串[]也无济于事。当将光标移动到第一个版本上时,eclipse告诉我:

类型不匹配:无法从字符串[]转换为字符串
,而表示“crt”

这是一个bug吗?

这将起作用:

for (String crt : new String[]{"a","b","c"} ) {
    doSomething();
}
不知道,这个怎么样?:)可惜没有简洁的版本。假设您可以使用Groovy或Scala,如果您需要类似的东西:)

你想要

for (String crt : new String [] {"a","b","c"} ) {
    doSomething();
}
我使用IntelliJ,它说将消息“expression expected”放在for循环中冒号的右侧,这似乎更准确


我应该补充一点,IntelliJ还为我提供了自动添加“新字符串[]”的功能。

Java语言提供了
{“a”、“b”、“c”}
表单作为快捷方式,但它仅在赋值过程中可用。这可能是为了避免解析过程中可能出现的歧义,在某些位置,
{}
可以解释为代码块


正确的方法是按照诺亚的建议,使用
新字符串[]{“a”、“b”、“c”}

我并不是真的声称发现了一个bug。我只是问它是否可能是一只虫子。奇怪的是,这种表达方式在一个地方有效,而在另一个地方却没有。在我看来不太一致。为了记录在案,@JoachimSauer指的是“不要急于声称你发现了一个bug”部分。最新的URL是,请注意,并非所有作业都允许使用这种简短形式。只有在初始化时才允许使用它。@Joachim:有趣的事实。这几乎解决了我的问题,谢谢你指出@汤姆·卡斯尔:+1回答得好
for (String crt : new String [] {"a","b","c"} ) {
    doSomething();
}