This question already has an answer here:
Java generics issue: Class “not within bounds of type-variable” error.
                                
                                    (1个答案)
                                
                        
                                4年前关闭。
            
                    
我意识到泛型类型冲突的问题已经在此站点上成功解决过很多次,过去所提供的建议对我有帮助,但是在这种情况下,我似乎无法确定冲突的根源。

我的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> { ... }


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

最佳答案

您要做的就是使Vertex实现Comparable<Vertex<T>>

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


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


AVLTree具有有界类型参数T extends Comparable<T>
在类型AVLTree<Vertex<T>>中,Vertex<T>代替T
AVLTree要求T扩展Comparable<T>,所以如果我们替代:Vertex<T>要求扩展Comparable<Vertex<T>>

09-30 15:44
查看更多