Несовместимые типы: переменная вывода 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]);
}