LinkedList错误

时间:2018-04-16 09:06:59

标签: java linked-list stack

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

2 个答案:

答案 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

的定义中
相关问题