【发布时间】:2023-03-20 15:58:01
【问题描述】:
我有如下界面:
public interface ISort<T extends Comparable<T>> {
public void sort(T[] array);
}
我对此的理解是<T extends Comparable<T>> 告诉编译器在这个类中,可能有一些泛型类型T,它们必须是Comparable<T> 或者是任何实现Comparable<T> 的类。
然后我有以下课程:
public class Sort<T extends Comparable<T>> implements ISort<T> {
public void swap(T[] array, int i, int j) {
T temp = array[i];
array[i] = array[j];
array[j] = temp;
}
public void sort(T[] array) {
java.util.Arrays.sort(array);
}
}
再次,我让<T extends Comparable<T>> 告诉编译器,在这个类中我将使用类型T,它必须与Comparable<T> 形成一个IS-A 关系。但是,为什么我只能输入implements ISort<T>,为什么我不需要写implements ISort<T extends Comparable<T>>?为了帮助我理解这一点,您能否解释一下这些泛型语句究竟向编译器推断了什么?
【问题讨论】:
标签: java generics extends implements