我是 Java 的新手。我不明白这个<T extends Comparable<T>>
.我的意思是为什么 T
在延伸之前?写extends Comparable<T>
还不够吗? ?为什么 extends
而不是 implements
在 javadoc 中它是一个接口(interface),对吧?据我了解Comparable
比较两个对象?
public class TopNPrinter<T extends Comparable<T>> {
private int N;
private String header;
public TopNPrinter(int N, String header) {
this.N = N;
this.header = header;
}
private List<T> getTopN(List<T> list) {
List<T> copy = new ArrayList<>(list);
Collections.sort(copy);
return copy.subList(0, N);
}
最佳答案
你错过了两件事:
首先,extends Comparable<T>
不适合你的 TopNPrinter
类(即类 TopNPrinter
不打算实现 Comparable
接口(interface))。
当你看到语法class TopNPrinter<T extends Comparable<T>>
时,那么你有一个泛型类,它声明了一个名为 T
的类型参数. extends Comparable<T>
限制 T
实现 Comparable
的类型接口(interface)(T
是通用 Comparable<T>
接口(interface)的类型参数。
第二个:
Is that not enough to write
extends Comparable<T>
如果你写了
class TopNPrinter extends Comparable<T>
那么,除非T
是现有类型,T
将是未定义/未知的。所以,如上所述,T
被声明为泛型类型参数。同样,这里的根本问题是需要理解泛型以及泛型类型是如何声明的。我个人找到了 generics faq对此非常有帮助。
关于java - Comparable Generic 如何使用 ist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59266459/