Naively, I supposed that every varargs parameter in Java could be treated just like a normal array. This is not the case for primitive arrays as I had to learn!
Using the standard library method Arrays.asList(T…) that converts arrays/varargs of objects to java.util.List‘s, an idiomatic code snippet may look like this:
final int[] ints = { 3, 2, 8, 1, 1, 5 }; final List<Integer> list = Arrays.asList(ints); Collections.sort(list);
However, the Java compiler complains about the second line:
Type mismatch: cannot convert from List<int[]> to List<Integer>
Obviously, the type parameter T is resolved to int[]. Apache Commons-Lang offers helps to resort from this problem: Its ArrayUtils.toObject() method takes a primitive array and converts it to the corresponding object array. The following, modified listing demonstrates this:
final int[] ints = { 3, 2, 8, 1, 1, 5 }; // final List<Integer> list = Arrays.asList(ints); final Integer[] intObjects = ArrayUtils.toObject(ints); final List<Integer> list = Arrays.asList(intObjects); Collections.sort(list);
Where to get it
Maven Dependency (Download):
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>