什么是<?超级T>语法?

虾饼干:

我无法理解以下语法:

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

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

T extends Comparable< ? super T>

手段。

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

逸斋

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章