Java 错误:方法无法应用于给定类型,推理变量具有不兼容的边界

Java Errors: method cannot be applied to given types, inference variable has incompatible bounds

提问人:Thibaud Clement 提问时间:5/25/2022 更新时间:5/25/2022 访问量:54

问:

在文件中实现 Java 中的 Merge Sort 方法时,作为作业的一部分,我正在尝试使用单独的文件测试我的代码。Sorting.javaDriver.java

下面是文件中方法的标头:mergeSort()Sorting.java

public class Sorting {
    public static <T> void mergeSort(T[] arr, Comparator<T> comparator) {
    }
}

然后,这是我尝试在文件中测试它的方式:Driver.java

public class Driver {
    public static void main(String[] args) {
        int[] testMergeSort1 = { 9, 13, 5, 6, 12, 10, 3, 7, 2, 8, 0, 15, 1, 4, 14, 11 };
        Sorting.mergeSort(testMergeSort1, new IntegerComparator());
        System.out.println(Arrays.toString(testMergeSort1));
    }

    public class IntegerComparator implements Comparator<Integer> {
        @Override
        public int compare(Integer a, Integer b) {
            return a.intValue() - b.intValue();
        }
    }
}

以下是编译文件时生成的错误:

Driver.java:29: error: non-static variable this cannot be referenced from a static context
        Sorting.mergeSort(testMergeSort1, new IntegerComparator());
                                          ^
Driver.java:29: error: method mergeSort in class Sorting cannot be applied to given types;
        Sorting.mergeSort(testMergeSort1, new IntegerComparator());
               ^
  required: T[],Comparator<T>
  found:    int[],Driver.IntegerComparator
  reason: inference variable T has incompatible bounds
    equality constraints: Integer,int
    lower bounds: Object
  where T is a type-variable:
    T extends Object declared in method <T>mergeSort(T[],Comparator<T>)

尝试而不是生成以下错误:Sorting.mergeSort(testMergeSort1, new IntegerComparator);Sorting.mergeSort(testMergeSort1, new IntegerComparator());

error: '(' or '[' expected
        Sorting.mergeSort(testMergeSort1, new IntegerComparator;

任何了解问题是什么以及如何解决该问题的指导将不胜感激。

Java 测试 驱动程序 比较器 原始类型

评论


答: 暂无答案