我想学习Java中泛型编程的概念,但我被困在一个question.Consider功能最多的这些实现:泛型在Java中
1)
public static <T extends Comparable<? super T>> T max(Collection<? extends T> collection){
//code
}
2)
public static <T extends Comparable<T>> T max(Collection<T> collection){
//code
}
我很好奇知道,他们之间有什么区别?
当然,我知道,声明Collection<? extends T>
允许将T的子类型作为Collection传递,但在这种情况下,在静态方法中它的用法是什么?
结果必须是相同的,没有使用边界,不是吗?
那么这个<T extends Comparable<? super T>>
呢?
如果你传递T的子类型,无论如何它都可以,因为T实现了Comparable并且Comparable的实现将保持在子类型中,所以你可以使用2)选项。
我只是想知道是否有某些情况下,这是不可能使用2)选项,但可以使用1)
提示:如果将该概念用于垂直间距,则文字变得更容易阅读;所谓的段落?在标点符号之后保存空格字符的意义是什么?你看,你写的文本被阅读。所以你应该尽可能为我们做到这一点。 – GhostCat
对不起,我很长一段时间没有使用服务 – nullbyte
http://stackoverflow.com/a/34605591/1553851 – shmosel