有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java链接列表错误

代码“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) 个答案

  1. # 1 楼答案

    您将MyStack定义为LinkedListStack的内部类,这意味着需要实例化一个封闭实例(属于LinkedListStack类):

    MyStack<Integer> stack = new LinkedListStack().new MyStack<>();
    

    或者您可以将MyStack更改为嵌套类,该类不需要封闭实例:

    static class MyStack<E extends Number>
    {
        ...
    }
    

    这样,您就不需要更改main