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中文网其他相关文章!