仅当外部类参数化时,内部接口才会生成错误?为什么?

时间:2016-04-17 17:30:09

标签: java class interface static parameterized

抽象方法getNextNode生成错误,“无法对非静态类型节点进行静态引用”,但仅限于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
    }
}

3 个答案:

答案 0 :(得分:2)

由于错误试图告诉您,您不能使用没有参数的通用类型。

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

您可以通过创建Nodestatic来解决此问题,以便它不会从其包含的类继承type参数。
但是,您实际上并不想这样做,因为Node 应该是通用的。

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

答案 1 :(得分:0)

Node的{​​{1}}缩写LinkedList<T>.Node以及getNextNode()并不知道T是什么。

答案 2 :(得分:0)

add_dependencies