【发布时间】:2018-08-23 09:09:37
【问题描述】:
我有一个类Node,它充当DoublyLinkedNode 和FibonacciNode 的抽象类。
package com.benjamin;
abstract class Node<N, T extends Comparable<T>> {
private N prev;
private N next;
private T data;
public N getPrev() { return prev; }
public N getNext() { return next; }
public T getData() { return data; }
public void setPrev(N prev) { this.prev = prev; }
public void setNext(N next) { this.next = next; }
public void setData(T data) { this.data = data; }
}
DoublyLinkedNode 和 FibonacciNode 扩展这个类,以便为这两个实现提供通用方法。
我的问题是当我传入 N 时,java 似乎无法将其识别为 DoublyLinkedList。
package com.benjamin;
public class DoublyLinkedNode<T extends Comparable<T>> extends Node<DoublyLinkedNode<T>, T>{
DoublyLinkedNode() {
setPrev(this);
setNext(this);
setData(null);
}
DoublyLinkedNode(T data) {
setData(data);
}
@Override
public String toString() {
if(getData() != null) {
return "| " + getData().toString() + " |";
}
else {
return "| ; |";
}
}
}
在我的DoublyLinkedList 课程中,我收到一条错误消息unable to resolve method setPrev(),在许多地方我收到required: DoublyLinkedList got: Object
在我决定统一我的 Node 实现之前,这段代码运行良好。
【问题讨论】:
-
哪些行导致该错误?
-
复制了您的代码。这里没有错误
-
消息
required: DoublyLinkedList got: Object提示您在某处使用原始类型。 -
尝试参数化基本类型并不是一个好主意
-
错误源于我的驱动程序类,它使用 setPrev() 和 setNext() 方法,这取决于我使用的是 DoublyLinked 节点还是 FibonacciNode
标签: java generics data-structures