Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java: Why isn't autoboxing happening here?

This gives me an error:

int[] l = new int[] {0, 2, 192, -1, 3, 9, 2, 2};
int[] l2 = new int[] {9001, 7, 21, 4, -3, 11, 10, 10};
int[] l3 = new int[] {5, 5, 5, 64, 21, 12, 13, 200};

Set<List<Integer>> lists = new HashSet<List<Integer>>();
lists.add(Arrays.asList(l));

Eclipse: The method add(List<Integer>) in the type Set<List<Integer>> is not applicable for the arguments (List<int[]>)

I thought int was supposed to be autoboxed to Integer?

like image 262
Nick Heiner Avatar asked Nov 20 '09 14:11

Nick Heiner


2 Answers

Although int is autoboxed to Integer, int[] is not Autoboxed to Integer[].

The arrays are not boxed, just the types themselves.

See this: How to convert int[] into List<Integer> in Java? for workarounds and the underlying reasons.

like image 185
Yishai Avatar answered Oct 22 '22 07:10

Yishai


It will autobox from

Integer i = 1
int ii = i;

But, you are trying to convert an array, and when it tries to put an array of primitives as an array of objects they are different.

like image 42
James Black Avatar answered Oct 22 '22 08:10

James Black