<T extends Object&E> vs <T extends E>

Pac*_*ier 29 java generics

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

public static <T extends Object&Comparable <?super T >> T max(Collection collection);

根据我的理解,它基本上意味着T必须是 java.lang.Objectjava.lang.Comparable <?超级T >>,

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

public static <T extends Comparable <?super T >> T max(Collection collection);

nob*_*beh 30

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

  • @Pacerier,是的,使用"javap -s". (2认同)