代码“new Mystack<>();”是红色下划线,我有编译器错误: “无法访问 LinkedListStack 类型的封闭实例。必须使用 LinkedListStack 类型的封闭实例来限定分配(例如 x.new A(),其中 x 是 LinkedListStack 的实例)。”
但我不明白该消息,出了什么问题?
import java.util.LinkedList;
public class LinkedListStack {
public static void main(String[] args) {
MyStack<Integer> stack = new MyStack<>();
}
class MyStack<E extends Number>
{
private LinkedList<E> elements = new LinkedList<>();
public void push(E item) {
elements.add(item);
}
public E pop() {
return elements.removeFirst();
}
public E peek() {
return elements.getLast();
}
}
}
最佳答案
您将 MyStack
定义为 LinkedListStack
的内部类,这意味着它需要实例化一个封闭实例(LinkedListStack
类):
MyStack<Integer> stack = new LinkedListStack().new MyStack<>();
或者您可以将 MyStack
更改为嵌套类,它不需要封闭实例:
static class MyStack<E extends Number>
{
...
}
这样您就不需要更改您的main
。
关于java - 链表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49853479/