public class MergeSort<T> {
private Comparator<? super T> c;
<T> void sort(T[] a, Comparator<? super T> c) {
mergeSort(a, 0, a.length);
this.c = c;
}
}
this.c = c
处的编译错误。错误是&#34;类型不匹配:无法从比较器转换为比较器&#34;
答案 0 :(得分:1)
<T>
方法上的sort
影响MergeSort<T>
中的T
,因此它们不重合,它们是两个独立的类型,恰好都被称为{ {1}}。只需删除它就可以了:
void sort(T[] a, Comparator<? super T> c) {
this.c = c;
}
答案 1 :(得分:0)
假设用户
GROUP BY
然后在MergeSort<Integer> sorter = new MergeSort<>();
String[] array = new String[] {"a", "b"};
Comparator<String> comparator = new Comparator<String> { ... };
sorter.<String> sort(array, comparator);
左侧有this.c = c
类型,右侧是Comparator<Integer>
。这显然没有意义,而且你的代码不应该编译。