JavaにおけるArays.asList()方法の詳細及び実例


Arays.asList()は、配列をリストとしています。
問題は以下のとおりです

public class Test {
 public static void main(String[] args) {
  int[] a = {1, 2, 3, 4};
  List list = Arrays.asList(a);
  System.out.println(list.size()); //1
 }
}
期待の出力はリストの中にも4つの要素があります。つまり、sizeは4ですが、結果は1です。
理由は以下の通りです
Arays.asListでは、この方法は長いパラメータを受け入れ、配列パラメータとして一般的に見られますが、int[]自体が一つのタイプなので、a変数がパラメータとして伝達される場合、コンパイラは一つの変数だけが伝えられたと考えています。この変数のタイプはint配列ですので、sizeは1で、Listの配列の個数に相当します。基本的なタイプは泛型のパラメータとしては使えませんが、包装タイプを使うべきです。しかし、ここでは間違いがないです。配列は汎型化できるので、転換後はlistの中にint型の配列があります。

/**
 * Returns a fixed-size list backed by the specified array. (Changes to
 * the returned list "write through" to the array.) This method acts
 * as bridge between array-based and collection-based APIs, in
 * combination with {@link Collection#toArray}. The returned list is
 * serializable and implements {@link RandomAccess}.
 *
 * <p>This method also provides a convenient way to create a fixed-size
 * list initialized to contain several elements:
 * <pre>
 *   List&lt;String&gt; stooges = Arrays.asList("Larry", "Moe", "Curly");
 * </pre>
 *
 * @param a the array by which the list will be backed
 * @return a list view of the specified array
 */
@SafeVarargs
public static <T> List<T> asList(T... a) {
 return new ArrayList<>(a);
}
指定された配列によってサポートされる固定サイズのリストを返します。戻りリストの変更は、行列に直接書きます。)この方法は、Collection.toArayとともに、配列ベースのAPIと、collectionベースのAPIとの間の橋渡しとして機能する。返したリストは、順番に並べられます。
したがって、複数のリストを作成する場合は、パラメータを転送する際に、Arays.co pyOf(a)方法を使用したほうがいいです。そうでなければ、リストの変更は配列の変更に相当します。

public class Test {
 public static void main(String[] args) {
  Integer[] a = {1, 2, 3, 4};
  List list = Arrays.asList(a);
  System.out.println(list.size()); //4
 }
}
最後に、Integer[]配列に値がない場合は、デフォルトはnullで、int[]配列のデフォルトは0ではありません。
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。