在java中使用Comparator中的super

Mar*_*llo 9 java comparator

我明白了

Comparator < ? super T> comp
Run Code Online (Sandbox Code Playgroud)

它根据指定比较器引发的顺序返回给定集合的最大元素.但我不明白的目的

超级T

有人可以解释一下吗?

Boh*_*ian 11

这个术语的? super T意思是"未知类型,或者是T的超类",在泛型用语中意味着它的下限是T.

使用此签名是因为T可以被分配给任何类型为或者是超类T的变量,并与之比较.即如果比较器可以在其compare()方法中接受超类T,则可以传入T.

这遵循PECS助记符:"Producer Extends,Consumer Super",这意味着事物的生产者应该使用具有上限(?extends T)的东西,而消费者(比如使用事物的比较器实现)应该使用下限( ?超级T).


ami*_*mit 6

这里的< ? super T>意思是泛型- 不是比较。

这意味着您有一个Comparator具有泛型类型的? super T扩展的东西是超类型的T),如本线程中所述

comp 是变量名(绑定)。

所以基本上在这里Comparator < ? super T>是一个类型并且comp是一个标识符(变量名),即类型Comparator <? super T>


更多信息:Java泛型