一尘不染

什么是语法?

java

我无法理解以下语法:

public class SortedList< T extends Comparable< ? super T> > extends LinkedList< T >

我看到SortedList类扩展了LinkedList。我只是不知道

T extends Comparable< ? super T>

手段。

到目前为止,我对它的理解是类型T必须是实现Comparable的类型…但这是什么< ? super T >


阅读 351

收藏
2020-09-08

共1个答案

一尘不染

泛型中的super与extends相反。并不是说可比对象的泛型类型必须是T的子类,而是要说它必须是T的超类。区别很重要,因为extends告诉您可以从类中得到什么(至少可以得到,也许是子类)。super告诉您可以添加到类中的内容(最多是这个,也许是超类)。

在这种特定情况下,要说的是该类型必须实现其自身或它的超类的可比对象。因此,请考虑java.util.Date。它实现Comparable<Date>。但是java.sql.Date呢?它也实现Comparable<java.util.Date>

没有超级签名,SortedList将无法接受java.sql.Date的类型,因为它不实现自身的Comparable,而是实现其自身的超类。

2020-09-08