Arrays.asList(new int[]{1,2,3})和Arrays.asList(new Integer[]{1,2,3})
阿新 • • 發佈:2020-12-19
Arrays.asList(new int[]{1,2,3}); Arrays.asList(new Integer[]{1,2,3});
這兩行程式碼的返回值是不一樣的。
看原始碼的話,該方法是是這樣的
public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }
既然是一個可變長度,那麼傳入int[]和Integer[]進去,肯定是將陣列平鋪。
那麼int[]和Integer[]的中的元素型別是怎麼樣?一個是int,一個是Integer?
但是好像沒有int這個類吧?雖然有著int.class的程式碼寫法倒是了。
結果是這樣的
int[] a = new int[] {1,2,3,4,5,6,7,8}; Integer[] b = new Integer[] {1,2,3,4,5,6,7,8}; List<int[]> ints1 = Arrays.asList(a); List<Integer> list = Arrays.asList(b);
需要注意asList返回的不是java.util包下的ArrayList,而是Arrays類中的靜態內部類。所以沒有重寫remove之類的方法,呼叫其父類的方法。
publicE remove(int index) { throw new UnsupportedOperationException(); }
丟擲不支援運算異常