不兼容的类型:推理变量T具有不兼容的边界

时间:2014-12-17 09:53:46

标签: java java-8

我有以下代码

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

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

由于某种原因,它抛出了以下编译错误

  

Solution.java:11:错误:不兼容的类型:推理变量T有   不相容的界限           List list = Arrays.asList(A);                                             ^       等式约束:整数       下界:int []其中T是一个类型变量:       T扩展了方法asList(T ...)

中声明的Object

我认为这是一个Java 8功能,但我不确定如何解决错误

3 个答案:

答案 0 :(得分:28)

Arrays.asList期待变量Objectint不是Object,而是int[],因此Arrays.asList(A)只会创建一个List<int[]>元素。

您可以使用IntStream.of(A).boxed().collect(Collectors.toList());

答案 1 :(得分:5)

在Java 8中,你可以做到

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

答案 2 :(得分:1)

没有从int []转换为List的快捷方式,因为Arrays.asList不处理装箱,只会创建一个不是你想要的List。你必须制作一种实用方法。

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