2013-08-19 102 views
0

我遇到了一段代碼。這行代碼實際上是什麼意思? public class Queue<E extends Element>{我明白E可以是任何對象,但爲什麼要加上extends Element。元素是一個獨立的類,包含2個變量+ getters和setter。使用該語法的優點/缺點是什麼?java中的代碼解釋

+2

它限制'Queue'只能開始包含'Element'擴展的Object。它基本上意味着,至少這個'Queue'只包含'Element'(或者從它擴展的對象)的實例......你應該看看[Generics](http://docs.oracle.com)如需更多詳細信息;) – MadProgrammer

+0

只需經過 - [泛型常見問題解答 - 類型參數界限](http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#Bounds )。 –

回答

4

這意味着只有在E延伸爲Element時,您纔可以創建Queue<E>的具體實例。因此,例如,這個聲明會失敗:

Queue<String> q; // Invalid 

...因爲String沒有延伸Element

這很有用,因爲在Queue<E>的實現中,你(和編譯器)知道E的屬性和方法爲Element,所以你可以使用它們。如果聲明只是public class Queue<E>{,那麼如果您嘗試使用Element屬性或E型參數和成員的方法,編譯器會抱怨,因爲Object上不存在這些屬性/方法。

+0

+爲好例子 – Dodi

1

類型E的通用Queue類實例化必須從Element繼承。

Queue類中的代碼依賴於(調用了)類方法。