2011-09-12 57 views
14

我正在阅读有效Java的[泛型]一章[项目27]。泛型中的“递归类型绑定”是什么意思?

有这一段在书中:

这是允许的,但比较少见,对于一个类型的参数,它涉及该类型参数本身的一些表达来界定。这就是所谓的递归类型边界。

这:

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

什么是递归式的约束,如何在上面这段代码帮助实现相互可比性?

+2

你的第一次报价接听第一个你的两个问题,不是吗? – NPE

+0

是的,它确实:)... – vinoth

回答

17

什么是递归式的约束

此:<T extends Comparable<T>>

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

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

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

相关问题