2011-09-12 56 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的對象。

相關問題