提问人:Thibaud Clement 提问时间:5/25/2022 更新时间:5/25/2022 访问量:54
Java 错误:方法无法应用于给定类型,推理变量具有不兼容的边界
Java Errors: method cannot be applied to given types, inference variable has incompatible bounds
问:
在文件中实现 Java 中的 Merge Sort 方法时,作为作业的一部分,我正在尝试使用单独的文件测试我的代码。Sorting.java
Driver.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;
任何了解问题是什么以及如何解决该问题的指导将不胜感激。
答: 暂无答案
评论