java - 创建通用堆栈数组

标签 java arrays generics

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

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

但是,当我尝试创建堆栈数组时,出现“找不到符号:E 类”错误。

如何创建通用堆栈数组?

最佳答案

等通用类型声明仅在您定义类时有效,例如

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

要像您一样创建堆栈数组,您可以使用通配符泛型:

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>()};

关于java - 创建通用堆栈数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864565/

相关文章:

java - Windows 64 上的 DICOM 图像到 BufferedImage

c - 将内存分配给字符串双指针数组?

javascript - React JS 连接数组并转换为新的二维数组并按二维数组数据总和排序

c++ - 如何将字符串转换为字符矩阵

java - 通用堆栈数组

java - 如何在方法中添加数组元素?

java - Smack API 和 Java

generics - Kotlin 中有没有办法将内联函数和 when 表达式与扩展函数结合起来?

.NET 反射 : Detecting IEnumerable<T>

java - 无法解析构造函数'ArrayAdapter(匿名android.widget.SeekBar.OnSeekBarChangeListener,int,java.util.ArrayList <java.lang.Integer>)