泛型双链表嵌套非静态Node类类型不匹配错误求助
问题解决:泛型双向链表嵌套Node类的类型不匹配错误
你的问题核心是嵌套Node类重复声明泛型参数<E>,且构造器也额外声明了<E>,导致多个同名泛型互相遮蔽,编译器无法识别正确的类型,才会抛出这种看似矛盾的类型不匹配错误。
修正步骤:
- 非静态内部类
Node不需要自己声明<E>,它会自动继承外部DLL<E>的泛型参数,直接复用外部的E即可。 - 移除构造器上的
<E>声明,避免再次遮蔽泛型参数。
修正后的代码:
public class DLL <E> { public class Node{ // 移除Node类的<E>泛型声明 private E element; private Node prev; // 直接用Node,无需指定<E> private Node next; public Node (E element, Node prev, Node next){ // 移除构造器的<E>声明 this.element = element; this.prev = prev; this.next = next; } } }
补充说明:
如果后续需要让Node类使用独立的泛型参数(不依赖外部类),可以把Node声明为静态内部类并单独声明泛型,但对于双向链表的场景,复用外部类的泛型显然更合理,所以上面的修正才是适配需求的正确方案。
内容的提问来源于stack exchange,提问作者jjsmith
相关产品推荐
相关产品推荐

