将数组转换为 Java
How do I convert an array to a list in Java?
I used the Arrays.asList()
but the behavior (and signature) somehow changed from Java SE 1.4.2 (docs now in archive) to 8 and most snippets I found on the web use the 1.4.2 behaviour.
For example:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- on 1.4.2 returns a list containing the elements 1, 2, 3
- on 1.5.0+ returns a list containing the array spam
In many cases it should be easy to detect, but sometimes it can slip unnoticed:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
转载于:https://stackoverflow.com/questions/2607289/converting-array-to-list-in-java
In your example, it is because you can't have a List of a primitive type. In other words, List<int>
is not possible. You can, however, have a List<Integer>
.
Integer[] spam = new Integer[] { 1, 2, 3 };
Arrays.asList(spam);
That works as expected.
The problem is that varargs got introduced in Java5 and unfortunately, Arrays.asList()
got overloaded with a vararg version too. So Arrays.asList(spam)
is understood by the Java5 compiler as a vararg parameter of int arrays.
This problem is explained in more details in Effective Java 2nd Ed., Chapter 7, Item 42.