43

なぜこれが機能するのですか:

String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);

しかし、これはしません:

List<String> list = Arrays.asList({"a","b","c"});
4

3 に答える 3

71

これは、配列を作成して代入する場合にのみ使用できる省略形です。

String[] array = {"a", "b", "c"};

ただし、これを行うことができます:

List<String> list = Arrays.asList("a","b","c");

AsasListは「vararg」引数を取ることができます。

于 2012-05-23T20:25:17.357 に答える
13

あなたの質問は、なぜ一方が機能し、もう一方が機能しないのかということですよね?

その理由は、{"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");
于 2012-05-23T20:44:42.247 に答える
9

あなたが試すことができます

List<String> list = Arrays.asList(new String[] {"a","b","c"});
于 2012-05-23T20:25:25.737 に答える