これが機能する理由:
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
しかし、これはしません:
List<String> list = Arrays.asList({"a","b","c"});
これは、配列を作成して割り当てるときにのみ使用できるショートハンドです。
String[] array = {"a", "b", "c"};
ただし、これを行うことができます。
List<String> list = Arrays.asList("a","b","c");
asList
は "vararg"引数を取ることができるため。
あなたの質問は、一方が機能し、もう一方が機能しない理由です。
その理由は、{"a","b","c"}
は有効なJava expressionではないため、コンパイラは受け入れられません。
あなたがそれを暗示するように思われるのは、 完全な配列作成式 (JLS 15.10)を提供せずに配列初期化子を渡したいということです。
他の人が指摘しているように、正しい配列作成式は次のとおりです。
String[] array = {"a", "b", "c"};
JLS 10.6 Array Initializers で述べられているように、または
String[] array = new String[]{"a", "b", "c"};
JLS 15.10配列作成式 に記載されているとおり。
この2つ目はインライン化に便利なので、配列変数の代わりに直接渡すことができます。
asList
のArrays
メソッドは変数引数を使用し、変数引数式は配列にマッピングされるため、次のようにインライン配列を渡すことができます。
List<String> list = Arrays.asList(new String[]{"a", "b", "c"});
または、配列に自動的にマップされる変数引数を渡すだけです:
List<String> list = Arrays.asList("a","b","c");
あなたが試すことができます
List<String> list = Arrays.asList(new String[] {"a","b","c"});