29

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

公共静态 <T 扩展对象和可比较<? super T>> T max(集合集合);

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

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

公共静态 <T 扩展 Comparable<? super T>> T max(集合集合);

4

1 回答 1

31

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

于 2012-04-26T18:42:46.813 回答