java不兼容类型:推理变量T的边界不兼容
我有下面的代码
public int solution(int X, int[] A) {
List<Integer> list = Arrays.asList(A);
出于某种原因,它抛出了以下编译错误
Solution.java:11: error: incompatible types: inference variable T has incompatible bounds List list = Arrays.asList(A); ^ equality constraints: Integer lower bounds: int[] where T is a type-variable: T extends Object declared in method asList(T...)
我假设这是一个Java8特性,但我不确定如何解决这个错误
# 1 楼答案
Arrays.asList
需要一个变量数Object
int
不是Object
,但int[]
是,因此Arrays.asList(A)
将创建一个只包含一个元素的List<int[]>
您可以使用
IntStream.of(A).boxed().collect(Collectors.toList());
# 2 楼答案
在Java8中,您可以
# 3 楼答案
没有从int[]转换为列表为数组的快捷方式。asList不处理装箱,只会创建一个不是您想要的列表。你必须制定一个实用的方法