我现在正在做作业,偶然发现了一个可能很简单的“问题”。
我必须构建一个堆栈,并且需要完成以下方法:
public E top()
{
if(!isEmpty()) {
/*
* return top element
* which would be st[pos-1]
*/
}
return null;
}
我用
//to save elements
private Object[] st;
//for position in array
private int pos = 0;
我试图返回我的数组,但是它告诉我“无法从Object转换为E”。现在我不知道如何继续。
//编辑:我的构造函数
public Stack(int size)
{
st = new Object[size];
//st = new E[size]; doesn't work
}
答案 0 :(得分:2)
您需要投射:
E element = (E) st[pos-1];
不过,您将获得未经检查的强制转换警告。如果您确保仅将E
的实例添加到数组,则可以安全地抑制这种情况。
void add(E element) {
st[pos++] = element;
}
(这差不多就是java.util.ArrayList
所做的,顺便说一下)
答案 1 :(得分:0)
您的数组应为E
private E[] st;