与 [重复]


问题内容

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

公共静态<T扩展对象和可比较<?超级T >> T max(Collection collection);

据我了解,它基本上意味着T必须既是
java.lang.Object又是java.lang.Comparable
<?超级T >>

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

公共静态<T扩展Comparable <?超级T >> T max(Collection collection);


问题答案:

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