Несовместимые типы: переменная вывода T имеет несовместимые границы

У меня есть следующий фрагмент кода

public int solution(int X, int[] A) {

    List<Integer> list = Arrays.asList(A);

По какой-то причине он бросает следующую ошибку компиляции

Solution.java:11: ошибка: несовместимые типы: переменная вывода T имеет несовместимые границы         Список List = Arrays.asList(A);                                           ^     ограничения равенства: Integer     нижние границы: int [], где T - переменная типа:     T extends Объект, объявленный в методе asList (T...)

Я предполагаю, что это функция Java 8, но я не уверен, как разрешить ошибку

Ответ 1

Arrays.asList ожидает переменное число Object. int не является Object, но int[] есть, поэтому Arrays.asList(A) создаст List<int[]> только с одним элементом.

Вы можете использовать IntStream.of(A).boxed().collect(Collectors.toList());

Ответ 2

В Java 8 вы можете сделать

List<Integer> list = IntStream.of(a).boxed().collect(Collectors.toList());

Ответ 3

Не существует ярлыка для преобразования из int [] в List, поскольку Arrays.asList не занимается боксом и просто создаст список, который не тот, который вы хотите. Вы должны сделать метод утилиты.

int[] ints = {1, 2, 3};
List<Integer> intList = new ArrayList<Integer>();
for (int index = 0; index < ints.length; index++)
{
    intList.add(ints[index]);
}