vs

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

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

根据我的理解,它基本上意味着T必须是java.lang.Object和java.lang.Comparable > ,

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

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

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