Java集合静态方法min

Java集合静态方法min,java,Java,有人能解释一下集合类中这个相当神秘的方法签名吗 public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll) publicstatic类型“T”是一个对象,实现了“Comparable”接口;min方法返回一个类型为T的对象,并将T的集合作为输入。除了Adam的描述之外。 参数集合:集合需要参数T 因此,我们

有人能解释一下
集合
类中这个相当神秘的方法签名吗

public static <T extends Object & Comparable<? super T>> 
        T min(Collection<? extends T> coll) 

publicstatic类型“T”是一个对象,实现了“Comparable”接口;min方法返回一个类型为T的对象,并将T的集合作为输入。

除了Adam的描述之外。 参数集合:集合需要参数T

因此,我们至少需要以下方法原型:

public static <T> T min(Collection<? extends T> coll)
当A和B是接口时使用

我不确定我的答案是否有帮助,因为它可能会提出另一个问题。我很高兴有人能解释为什么返回类型

<T extends Comparable<T>> T
T
还不够复杂,他们说

<T extends Object & Comparable<? super T>> T

方法签名在
静态
之后和返回类型之前的部分称为类型约束。在您的情况下,类型约束指定类型
T
应该是
Object
的子类,并且应该实现接口
Comparable


(对象的
部分是多余的;因此约束可以写得更简短,因为
我将把答案限制在“神秘”部分,并假设您理解
公共
静态
和基本泛型,如
集合


1.CollectionSo,是冗余的,它可能只是?@Petros:Java中的每个类都是
对象
的子类。因此
对象
部分是冗余的。另一个约束-
扩展了可比的
-需要保留。@missingfactor:实际上我刚刚发现这不是冗余的。它对编译器说T的擦除应该是Object而不是Comparable。嗨,在Java编程语言中说,“包含“extensed Object”似乎是多余的,但它将T的擦除改为Object而不是Comparable。”@佩特罗斯:是的,你说得对。我不知道这个功能。非常感谢你指出。每天学习新东西!:-)
T extends A & B
<T extends Comparable<T>> T
<T extends Object & Comparable<? super T>> T
Type Parameters                              Type Erasure
-------------------------------------------------------------
<T>                                          Object
<T extends Number>                           Number
<T extends Comparable<T>>                    Comparable
<T extends Cloneable & Comparable<T>>        Cloneable
<T extends Object & Comparable<T>>           Object
<S, T extends S>                             Object, Object
List<Integer> integers = Arrays.asList(1, 2, 3, 4);
Number n = Collections.min(integers);