普通整型數組 arr :
int[] arr = {1,2,3};
錯誤做法:
Arrays.asList(arr);
瞄一眼源碼,Arrays.asList() 返回的 ArrayList 是 java.util.Arrays 的一個靜態內部類 java.util.Arrays.ArrayList,而不是我們要的 java.util.ArrayList 。
/**
* Returns a fixed-size list backed by the specified array.
* @param <T> the class of the objects in the array
* @param a the array by which the list will be backed
* @return a list view of the specified array
*/
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
/**
* @serial include
*/
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
private static final long serialVersionUID = -2764017481108945198L;
private final E[] a;
。。。
}
正確的做法:
public static void main(String[] args) {
int[] arr = {1,2,3};
List<Integer> collect = Arrays.stream(arr).boxed().collect(Collectors.toList());
//ArrayList<Integer> list = (ArrayList<Integer>) collect;
collect.add(4);
collect.forEach(System.out::println);
}