Arrays.asList(T...)不支持基本数据类型数组

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处理可变参数的时候,对数组的处理基本粒度为对象,

 并且基本类型数据会自动封装成对应的包装类对象

 

 那么基本数据数组是什么对象呢

 

posted @ 2020-06-17 11:26  M1ssed  阅读(460)  评论(0)    收藏  举报