簡體   English   中英

Comparable Generic 如何使用ist

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM