如何在Java中将数组转换为列表?
我使用了Arrays.asList()
,但其行为(及签名)从Java SE 1.4.2(文档现已存档)到8发生了变化,大多数我在网上找到的代码片段都使用1.4.2的行为。
例如:
int[] numbers = new int[] { 1, 2, 3 };
Arrays.asList(numbers)
- 在 1.4.2 版本中返回包含元素 1、2、3 的列表
- 在 1.5.0+ 版本中返回包含数组 'numbers' 的列表
在许多情况下,这应该很容易检测到,但有时它可能会不经意地滑过:
Assert.assertTrue(Arrays.asList(numbers).indexOf(4) == -1);
Arrays.asList(new int[] { 1, 2, 3 })
;在Java 1.4.2中绝对无法编译通过,因为一个int[]
不是一个Object[]
。请注意,这里的关键问题是int[]
和Object[]
之间的转换。 - Joachim SauerArrays.asList
代码就可以正常工作了。 - Horse Voice