Code" 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();
}
}
}
答案 0 :(得分:1)
您将MyStack
定义为LinkedListStack
的内部类,这意味着它需要实例化一个封闭的实例(LinkedListStack
类):
MyStack<Integer> stack = new LinkedListStack().new MyStack<>();
或者您可以将MyStack
更改为嵌套类,它不需要封闭的实例:
static class MyStack<E extends Number>
{
...
}
这样您就不需要更改main
。
答案 1 :(得分:0)
您正在声明一个嵌套类,该类绑定到封闭类,因此需要所述类的实例:
https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
将关键字static
添加到MyStack