可比通用方法

我是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);
    }
ylzg_2000 回答:可比通用方法

  

为什么要扩展而不在javadoc中实现其接口,对吗?

因此,在这种情况下,T特别应该是一个接口,而不是一个已实现的类。接口可以扩展接口吗?

例如:

public interface MyOwnComp extends Comparable{

}
,

您缺少两件事:

首先,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被声明为泛型类型参数。同样,这里的基本问题是需要了解泛型以及如何声明泛型类型。我个人认为generics faq对此非常有帮助。

本文链接:https://www.f2er.com/2949675.html

大家都在问