Arrays.asList() 和原始数组
尝试使用 Arrays.asList( 将原始数据数组转换为列表时) 方法,可能会遇到不一致的情况。本文探讨了该问题并提供了解决方案。
问题说明
Arrays.asList() 方法接受表示数组的变量参数。但是,与 Integer[] 等引用类型不同,它不支持 int[] 等基本数据类型。因此,提供的第二个示例:
int[] ints = new int[] {1,2,3,4,5}; List<Integer> list = Arrays.asList(ints);
返回 List
自动装箱
自动装箱,将原始数据类型转换为其包装器对应项,不适用于数组基元。因此,int[]数组不会自动转换为Integer[]数组。
解决方案
要解决此问题,可以利用第三方库,例如作为 Guava 的 com.google.common.primitive.Ints.asList 方法。它从原始数组创建一个装箱值列表。或者,可以手动创建一个 Integer[] 数组并从 int[] 数组中赋值,即
int[] ints = new int[] {1,2,3,4,5}; Integer[] integers = new Integer[ints.length]; for (int i = 0; i < ints.length; i++) { integers[i] = ints[i]; } List<Integer> list = Arrays.asList(integers);
以上是为什么 Arrays.asList() 不适用于原始数组?的详细内容。更多信息请关注PHP中文网其他相关文章!