有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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特性,但我不确定如何解决这个错误


共 (3) 个答案

  1. # 1 楼答案

    Arrays.asList需要一个变量数Objectint不是Object,但int[]是,因此Arrays.asList(A)将创建一个只包含一个元素的List<int[]>

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

  2. # 2 楼答案

    在Java8中,您可以

    List<Integer> list = IntStream.of(a).boxed().collect(Collectors.toList());
    
  3. # 3 楼答案

    没有从int[]转换为列表为数组的快捷方式。asList不处理装箱,只会创建一个不是您想要的列表。你必须制定一个实用的方法

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