首页 > 编程语言 > 详细

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

时间:2020-06-17 11:44:42      阅读:100      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!