java - 仅当外部类参数化时内部接口(interface)才会生成错误?为什么?

标签 java class interface static parameterized

抽象方法 getNextNode 会生成错误“无法对非静态类型 Node 进行静态引用”,但前提是 LinkedList 已参数化。如果我从 LinkedList 中删除泛型,错误就会消失。为什么?

public class LinkedList<T> {
    Node head;
    public LinkedList() {
        head = new Node();
    }
    private class Node {

    }

    interface stuff {
        public Node getNextNode();//ERROR Cannot make a static reference to the non-static type Node
    }
}

最佳答案

正如错误试图告诉您的那样,您不能使用没有参数的泛型类型。

Node实际上是LinkedList<T>.Node 。由于您的接口(interface)不是通用的(接口(interface)不会从包含的类继承类型参数),因此没有 T它可以替代。

您可以通过设置 Node 来解决此问题类static ,这样它就不会从其包含的类继承类型参数。
但是,您实际上不想这样做,因为 Node 应该是通用的。

您实际上还需要使您的界面通用,以便它可以指定 T .

关于java - 仅当外部类参数化时内部接口(interface)才会生成错误?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36679830/

相关文章:

java - 带有内容管理系统的 GWT

java - 如何使用 Apache POI 解密 .doc/docx 文件?

python - 向后或向前读相同的单词

c - 多个以太网接口(interface) - 如何创建一个单独的网络并从 C 代码访问

java - Spring websocket无法接收大数据

java - 是否可以在一个 Java 类中运行 Java 应用程序和 Junit 测试?

java - 使用反射实例化实现特定接口(interface)的 Java 类

c# - wpf 这些 View 模型类之间有什么区别?

java - 如何使用变量名在派生类构造函数中初始化数组?

c# - 如何正确实现泛型接口(interface)方法?