Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型参数T1不在类型变量T2的范围内_Java_Generics - Fatal编程技术网

Java 类型参数T1不在类型变量T2的范围内

Java 类型参数T1不在类型变量T2的范围内,java,generics,Java,Generics,我意识到泛型类型冲突的问题已经在这个网站上被成功地解决了很多次,并且给出的建议在过去对我有所帮助,但在这种情况下,我似乎无法确定冲突的来源 Graph类中的第一个声明给了我一个错误: error: type argument Vertex<T#1> is not within bounds of type-variable T#2 private AVLTree<Vertex<T>> vertices;

我意识到泛型类型冲突的问题已经在这个网站上被成功地解决了很多次,并且给出的建议在过去对我有所帮助,但在这种情况下,我似乎无法确定冲突的来源

Graph类中的第一个声明给了我一个错误:

error: type argument Vertex<T#1> is not within bounds of type-variable T#2
    private AVLTree<Vertex<T>> vertices;
                          ^
  where T#1,T#2 are type-variables:
    T#1 extends Comparable<T#1> declared in class Graph
    T#2 extends Comparable<T#2> declared in class AVLTree
以下是Graph类声明和有问题的字段:

public class Graph<T extends Comparable<T>> implements GraphInterface<T> {

    private AVLTree<Vertex<T>> vertices;

    ...

    // implemented methods, etc.

    ...

}
AVLTree类声明:

public class AVLTree<T extends Comparable<T>> { ... }
public class Vertex<T extends Comparable<T>> implements Comparable<Vertex> { ... }
和顶点类声明:

public class AVLTree<T extends Comparable<T>> { ... }
public class Vertex<T extends Comparable<T>> implements Comparable<Vertex> { ... }

我看不出这里出了什么问题。有什么想法吗?

您所要做的就是让Vertex实现具有可比性:

您可以做一些替换来找出原因:

AVLTree具有有界类型参数T

在类型AVLTree中,Vertex代替T

AVLTree要求T扩展Comparable,所以如果我们替换:Vertex需要扩展Comparable


谢谢,它现在工作得很好!我记得我在黑暗中试过几次。我的IDE似乎需要几秒钟来确认更改并删除标志。在我的挫折中,我在它有机会工作之前就找到了正确的解决方案。经验教训:要有耐心;