抽象方法 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/