<t extends =“”object =“”&=“”e =“”> vs <t extends =“”e =“”> </t> </t>

时间:2012-04-26 18:33:02

标签: java generics

java.util.Collections.max的签名如下所示:

  

public static&lt; T extends Object&amp;可比&LT ;?超级T&gt;&gt; T max(收藏品集);

据我所知,它基本上意味着T必须是java.lang.Objectjava.lang.Comparable<? super T>>

但是,由于每个java.lang.Comparable也是java.lang.Object,上面的签名和下面的签名之间有什么区别? :

  

public static&lt; T extends Comparable&lt;?超级T&gt;&gt; T max(收藏品集);

1 个答案:

答案 0 :(得分:30)

保持二进制兼容性:完全描述了here。第二个签名实际上将方法的返回类型更改为Comparable,并且它失去了返回Object的一般性。原始签名保留了两者。