首页 >Java >java教程 >自版本 1.4.2 以来,Java 中'Arrays.asList()”的行为有何变化?

自版本 1.4.2 以来,Java 中'Arrays.asList()”的行为有何变化?

Patricia Arquette
Patricia Arquette原创
2024-12-06 05:36:15249浏览

How Has the Behavior of `Arrays.asList()` Changed in Java Since Version 1.4.2?

Java 中的数组到列表:不断演变的行为

在 Java 中,将数组转换为列表是一项常见任务。然而,自 Java SE 1.4.2 以来,Arrays.asList() 方法的行为发生了重大变化。

Java 1.5 之前的行为

Java 1.5 之前, Arrays.asList() 返回一个包含数组实际元素的列表。例如:

int[] numbers = { 1, 2, 3 };
List<Integer> list1 = Arrays.asList(numbers);

在本例中,list1 将包含元素 1、2 和 3。

Java 1.5 及更高版本中的行为

从 Java 1.5 开始,Arrays.asList() 的行为发生了变化。它现在返回一个固定大小的列表,其中包含对原始数组的引用。结果:

int[] numbers = { 1, 2, 3 };
List<Integer> list2 = Arrays.asList(numbers);

在这种情况下,list2 将包含单个元素:数组编号本身。

更改原因

行为的改变是为了强制类型安全。由于列表不能包含像 int 这样的基本类型,因此返回的列表必须是 List 类型。

对现有代码的影响

Java 1.5 之前编写的代码依赖Arrays.asList() 的旧行为可能需要修改。例如,以下断言在 Java 1.5 及更高版本中将失败:

Assert.assertTrue(Arrays.asList(numbers).indexOf(4) == -1);

将数组转换为基本类型列表

将基本类型数组转换为相应包装类的列表,您可以使用以下技术:

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

这个将创建一个包含数组值的 Integer 对象列表。

以上是自版本 1.4.2 以来,Java 中'Arrays.asList()”的行为有何变化?的详细内容。更多信息请关注PHP中文网其他相关文章!

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