Java не может автоматически блокировать массив, только отдельные значения. Я бы предложил изменить подпись вашего метода на
public void doSomething(Integer... args)
Тогда будет происходить автобокс при вызове doSomething
, вместо попытки (и сбоя) при вызове Arrays.asList
.
То, что происходит, - это то, что Java теперь автоматически блокирует каждое отдельное значение, когда оно передается вашей функции. То, что вы пытались сделать раньше, это, передавая int[]
в Arrays.asList()
, вы просили эту функцию выполнить автобокс.
Но автобокс реализован компилятором - он видит, что вам нужен объект, но передает примитив, поэтому он автоматически вставляет необходимый код, чтобы превратить его в соответствующий объект. Функция Arrays.asList()
уже скомпилирована и ожидает объекты, и компилятор не может превратить int[]
в Integer[]
.
Переместив автобокс в вызывающие функции, вы решили эту проблему.