generics中的“递归类型绑定”是什么意思?

我正在阅读有效Java [第27项]中关于generics的章节。

书中有这一段:

允许(尽管相对罕见)类型参数受某个涉及该类型参数本身的表达式的限制。 这就是所谓的递归类型绑定。

和这个:

// Using a recursive type bound to express mutual comparability public static <T extends Comparable> T max(List list) {...} 

什么是递归类型绑定以及上面的代码如何帮助实现相互可比性?

什么是递归类型绑定

这: >

请注意,类型参数T也是超级接口Comparable的签名的一部分。

以上代码如何帮助实现相互比较?

它确保您只能比较T类型的对象。 没有类型绑定, Comparable比较任何两个Object 。 使用类型绑定,编译器可以确保只比较两个类型为T对象。

Angelika Langer撰写的Java Generics FAQ中有一个条目,其中解释了此类声明的详细信息: http : //www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ106