4

以下が整数のリストを返さないのはなぜですか?

int[] ints = new int[] { 1, 2, 3, 4, 5 };
List<Integer> intsList = Arrays.asList(ints); //compilation error

しかし、代わりにのリストint[]

この間

String[] strings = new String[] { "Hello", "World" };
List<String> stringsList = Arrays.asList(strings);

のリストを返しますString。プリミティブの配列であるために失敗すると推測していますが、なぜですか? そして、実際にのリストを返すにはどうすればよいですかint

4

3 に答える 3

2

TinはのList<T>サブタイプでなければなりませんがjava.lang.Object、そうでintはありません。唯一の他の解釈は、私たちが使用...しているように、 の配列int[]、つまりint[][]. だからあなたは得るList<int[]>

Stringは のサブタイプでObjectあるため、これは期待どおりに機能します。また、J2SE 5.0 で可変引数が導入される前に機能する唯一の方法です。一般に、既存のコードの解釈は、言語バージョン間で変更されるべきではありません。

ここで、 が必要な場合は、List<Integer>各整数を調べてボックス化できます。プログラムにこれらの要素が多数ある場合、メモリが問題になる可能性があります。を でコンパクトにバックアップするサードパーティ ライブラリを使用するList<Integer>int[]、プリミティブの配列だけを使用することをお勧めします。Java が値型をサポートしていないのは残念です。

于 2013-06-04T18:30:12.033 に答える