繁体   English   中英

Java通用:递归类型的声明

[英]java generic: declaration of recursive types

Effevtive Java中,我看到一个声明: public static <T extends Comparable<T>> T max(List<T> list) extended public static <T extends Comparable<T>> T max(List<T> list) ,类型变量T是可以与自身进行比较的类型。 我的问题是从Comparable删除<T>有什么区别? 我的意思是这个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 ),我认为不是预期的。

您将声明参数化类型以“原始”方式实现Comparable接口。

例如,一个class Foo implements Comparable (原始类型)将适合您的参数化类型。

反过来,该类可以重写compareTo(Object o)而不是compareTo(Foo f)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM