我现在正在做作业,偶然发现了一个可能非常简单的“问题”。
我必须构建一个堆栈,我需要完成以下方法:
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
}
最佳答案
您需要转换:
E element = (E) st[pos-1];
不过,您会收到未经检查的强制转换警告。只要您确保仅将 E
的实例添加到数组中,就可以安全地抑制此操作。
void add(E element) {
st[pos++] = element;
}
(这几乎就是 java.util.ArrayList
所做的,顺便说一句)
关于java - 如何返回泛型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55973278/