创建通用堆栈数组

时间:2012-03-25 22:13:05

标签: java arrays generics

Stack<E>[] stacks = {new Stack<Bed>(), new Stack<Bookshelves>(), 
                     new Stack<Chair>(), new Stack<Desk>(), new Stack<Table>()};

对于类,我必须创建自己的Stack类,它接受我指定的任何对象。 根据规范,我必须将所有堆栈放入一个数组中。

但是,当我尝试创建一个Stacks数组时,我得到一个“找不到符号:E类”的错误。

如何创建通用堆栈数组?

1 个答案:

答案 0 :(得分:6)

通用类型声明,例如&lt; E&gt;仅在您定义类时才起作用,例如

public class Stack<E>{
 // etc.
} 

要创建一个Stacks数组,您可以使用通配符:

Stack<?>[] stacks = {new Stack<Bed>(), new Stack<Bookshelves>(), new Stack<Chair>(), new Stack<Desk>(), new Stack<Table>()};

或者如果堆栈中的所有对象共享一个公共继承,您可以使用类似

之类的东西缩小通配符的范围。
Stack<? extends Furniture>[] stacks = {new Stack<Bed>(), new Stack<Bookshelves>(), new Stack<Chair>(), new Stack<Desk>(), new Stack<Table>()};