首页 >Java >java教程 >为什么 Java 中的 Arrays.asList() 不自动装箱原始数组?

为什么 Java 中的 Arrays.asList() 不自动装箱原始数组?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-28 16:06:11456浏览

Why Doesn't `Arrays.asList()` Autobox Primitive Arrays in Java?

Arrays.asList() 难题:了解其局限性

在 Java 中,Arrays.asList 方法提供了一种转换数组的便捷方法到一个列表中。但是,在处理原始数组(例如 float[])时,我们会遇到异常。

此代码片段按预期工作,创建了一个 Integer 对象列表:

List<Integer> list = Arrays.asList(1,2,3,4,5);

在另一方面,以下代码无法创建 List:

int[] ints = new int[] {1,2,3,4,5};
List<Integer> list = Arrays.asList(ints);

相反,输出是List,突出显示 Arrays.asList 与原始数组的行为差异。

  • 为什么会发生这种情况?

Arrays.asList 接受一个 varargs 参数,它是数组的语法简写。但是,在基元的情况下,它将整个数组视为单个元素,而不是每个基元值。这会产生一个包含基元数组的 List,而不是包装为对象的单个基元值。

  • 可以更正吗?

不幸的是,没有直接的方法将 int[] 转换为 List使用Arrays.asList。为了实现这一目标,必须求助于外部库或自定义代码。

  • 为什么自动装箱在这里不起作用?

自动装箱通常会转换基元到其相应的包装对象中以在对象集合中使用。但是,当应用于基元数组时,它不会按元素发生。此限制源于 Java 不支持数组自动装箱这一事实。

以上是为什么 Java 中的 Arrays.asList() 不自动装箱原始数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn