<T 扩展了 Object & E> vs <T 扩展了 E>

2022-09-01 13:18:48

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

公共静态<T 扩展了 Object & Comparable<?超级T>> T max(收集集合);

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

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

公共静态<T 扩展可比性<?超级T>> T max(收集集合);


答案 1

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


答案 2

推荐