[英]Comparable Generic how to use ist
我對Java很陌生。 我不明白這個<T extends Comparable<T>>
的想法。 我的意思是為什么T
之前延伸? 編寫extends Comparable<T>
還不夠嗎? 為什么在 javadoc 中extends
而不是implements
它的接口,對嗎? 據我了解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
接口)。
當您看到語法class TopNPrinter<T extends Comparable<T>>
,您就有了一個泛型類,它聲明了一個名為T
的類型參數。 extends Comparable<T>
將T
限制為實現Comparable
接口的類型( T
是泛型Comparable<T>
接口的類型參數。
第二:
寫
extends Comparable<T>
還不夠嗎?
如果你寫
class TopNPrinter extends Comparable<T>
然后,除非T
是現有類型, T
將是未定義的/未知的。 因此,如上所述, T
被聲明為泛型類型參數。 同樣,這里的基本問題是需要理解泛型以及泛型類型是如何聲明的。 我個人認為泛型常見問題對此非常有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.