我意识到泛型类型冲突的问题已经在该站点上成功解决了很多次,过去所提供的建议对我有帮助,但是在这种情况下,我似乎无法确定冲突的根源。
我的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>>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句