2013-08-19 67 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类中的代码依赖于(调用了)类方法。