1.ArrayList.asList(T..)不支持将基本类型数组转换成期望List
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
原因探究:可以看到构造一个Java.utils.Arrays.ArrayList对象时,可变参数后台自动转换成数组,如果传入的可变参数就是数组呢?
经debug发现
Integer类型数组在转换时等价于可变数目的Integer对象,
等传入基本数据类型数组int[] 的时候,糟了,jvm进行参数转换的时候,整个数组参数都变成了目标数组的一个元素。说明基本类型数组在可变参数中相当于一个对象而非对象数组,可见在jvm处理可变参数的时候,对数组的处理基本粒度为对象,
并且基本类型数据会自动封装成对应的包装类对象
那么基本数据数组是什么对象呢
Arrays.asList(T...)不支持基本数据类型数组
原文:https://www.cnblogs.com/WAYN/p/13151452.html