我正在實現一個通用的AVL樹,但我有一些編譯錯誤。類型參數T不在類型變量T的範圍內(Java通用)
我AVL T恤具有處理類型T
在這個例子中的Node<T>
,類型爲事件class.I要比較的節點。
但是每種類型的數據都必須進行不同的比較,爲此,我將比較數據傳遞給自己做比較。
我試圖讓節點實現可比接口和事件類相同的事情。
我的代碼結構看起來如下:
樹型結構:
public class AvlTree<T extends Comparable<T>> {
private Node<T> root;
public AvlTree() {
root = null;
}
//other method to insert dellete operation in the tree
}
節點結構:
public class Node<T extends Comparable<T>> implements Comparable<T> {
private T data;
private Node<T> left;
private Node<T> right;
public Node() {
}
@Override
public int compareTo(T t) {
return this.data.compareTo(t);
}
}
事件類將被放置在一個節點對象:
public class Event implements Comparable<Event>{
private Point point;
public Event() {
}
@Override
public int compareTo(Event t) {
return 1;
}
}
這給了我一個編譯錯誤的代碼時,我聲明瞭一個AvlTree:
private AvlTree<Node<Event>> treeOfEvents;
錯誤:
type argument
Node<Event>
is not within bounds of type-variable T
where T is a type-variable:
T extends Comparable<T>
declared in class AvlTree
'Node> implements Comparable '應該'Node > implements Comparable >'。 –
此外,通過聲明'AvlTree>'這意味着樹中的節點將保存'節點',您只需要'AvlTree '。 –
我想你實際上想要一個'AvlTree'。在這種情況下,它是需要實現「可比較」而不是「節點」的「事件」。 –