类型参数T不是类型变量T(爪哇通用)[重复]的范围内(Type argument T is not

2019-10-22 17:13发布

这个问题已经在这里有一个答案:

  • Java泛型的问题:类错误“不是类型变量的范围内”。 1个回答

我实现一个通用的AVL树,但我有一些编译错误。

我的AVL三通具有处理Node<T> T类型的

在这个例子中,类型是事件class.I要比较的节点。

但是,每种类型的数据都有以不同的方式相比,对于这一点,我传递的比较数据本身来进行比较。

我试图使执行Comparable接口,同样的事情到事件类的节点。

我的代码结构看起来如下:

树型结构:

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;

错误:

类型参数Node<Event>不是类型变量T的范围内
其中T是一个类型的变量:
T extends Comparable<T>类AvlTree声明

Answer 1:

您的节点必须实现可比喜欢这里:

public class Node<T extends Comparable<T>> implements Comparable<Node<T>> {

如您AvlTree期待的东西为通用型,其正是出于这个类型实现可比



文章来源: Type argument T is not within bounds of type-variable T(Java Generic) [duplicate]