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);