在 Effevtive Java 中,我看到一个声明:public static <T extends Comparable<T>> T max(List<T> list)
, 类型变量 T
是一种可以与自身进行比较的类型。我的问题是当我删除 <T>
时有什么区别?来自 Comparable
?我是说这个public static <T extends Comparable> T max(List<T> list)
.
最佳答案
这意味着您将期望一个与 Object
相当的类型,因为 java 在未提供时将泛型推断为 Object
。
<T extends Comparable> // The generic type for Comparable is inferred as Object as it was not provided.
这意味着提供给列表的类型需要实现 compareTo(Object o)
和实现 Comparable
(注意 Comparable< 缺少泛型类型
),我认为这不是故意的。
关于java 泛型 : declaration of recursive types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327662/