Bound mismatch: The type Integer is not a valid substitute for the bounded parameter <Item extends Comparable<Item>> of the type BTNode<Item>
这是我收到错误的地方:
public class BinaryTree<Integer> {
private BTNode<Integer> root;
//...
}
这是我正在使用的课程:
public class BTNode<Item extends java.lang.Comparable<Item>> implements java.lang.Comparable<BTNode<Item>> {
private Item data;
//...
}
我认为Integer
包装器应满足条件<xx extends Comparable<xx>>
。
我的理解错了吗?你能告诉我这里我做错了什么吗?
仅供记录,我使用的是java.lang.Comparable
而不是我自己的Comparable
实现。
答案 0 :(得分:2)
问题在于:
public class BinaryTree<Integer> {
private BTNode<Integer> root;
}
class参数名为Integer
。声明BTNode<Integer>
时,您不是引用java.lang.Integer
而是引用参数。
我真的不知道你要做什么,但有一条建议:最好用一个字母来命名你的类参数。例如,使用时不会发生错误:
public class BinaryTree<T> {
private BTNode<Integer> root;
}
如果您希望root
真正使用class参数,那么:
public class BinaryTree<T extends Comparable<T>> {
private BTNode<T> root;
}
请查看以下课程:http://docs.oracle.com/javase/tutorial/extra/generics/index.html