なぜこれが機能するのですか:
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(array);
しかし、これはしません:
List<String> list = Arrays.asList({"a","b","c"});
これは、配列を作成して代入する場合にのみ使用できる省略形です。
String[] array = {"a", "b", "c"};
ただし、これを行うことができます:
List<String> list = Arrays.asList("a","b","c");
AsasList
は「vararg」引数を取ることができます。
あなたの質問は、なぜ一方が機能し、もう一方が機能しないのかということですよね?
その理由は、{"a","b","c"}
これは有効な Java 式ではないため、コンパイラはそれを受け入れることができません。
あなたが暗示しているように見えるのは、完全な配列作成式(JLS 15.10)を提供せずに配列初期化子を渡したいということです。
他の人が指摘したように、正しい配列作成式は次のとおりです。
String[] array = {"a", "b", "c"};
JLS 10.6 Array Initializersに記載されているように、または
String[] array = new String[]{"a", "b", "c"};
JLS 15.10 Array Creation Expressionsに記載されているとおり。
この 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"});