Forループで何か特別なことを試してみましたが、Javaは、for-eachループのソースとして匿名配列を正しく配置するのは好きではないようです。
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"}
フォームを提供しますが、これは割り当て時にのみ可能です。これは、一部の位置で、解析中に起こり得るあいまいさを避けるために可能です{}
はコードブロックとして解釈できます。
それを行う正しい方法は、new String[]{"a","b","c"}
を使用したnoahの提案です。
ダンノ、これはどう? :)残念ですが、簡潔なバージョンはありません。 GroovyまたはScalaのようなものが必要な場合に使用できます)。
for (String s : Arrays.asList("a","b","c")) {
hmm(s);
}
あなたが欲しい
for (String crt : new String [] {"a","b","c"} ) {
doSomething();
}
私はIntelliJを使用していますが、forループのコロンの右側に「式が予期されています」というメッセージが表示されます。
IntelliJも「新しい文字列[]」を自動的に追加するように提案していることを付け加えておきます。