我想扩展我的BinaryTree类,以便只接受Integer参数,我可以重用代码。
public class BinaryTree<T extends Comparable<T>>
{/*code omitted for convenience*/}
public class BinaryTreeInt<T extends Integer> extends BinaryTree<T>
{/*code omitted for convenience*/}
我在编译时遇到以下错误 -
BinaryTreeInt.java:1: type parameter T is not within its bound
public class BinaryTreeInt<T extends Integer> extends BinaryTree<T>
^
1 error
有人可以指导如何为这种继承编写代码吗?
答案 0 :(得分:2)
整数是最终的,所以你拥有的是
public class BinaryTreeInt extends BinaryTree<Integer>
但是类型暗示它是int
而不是Integer
答案 1 :(得分:1)
问题源于以下潜在的类:
class FunnyNumber extends Integer { }
此课程不会展开Comparable<T>
,因此不能将其用作T
基础。
换句话说,extends Comparable<Integer>
与extends Comparable<T>
不同。
你的第二堂课不应该是通用的。
如果要更改类型参数,则只应使用泛型
在这里,您需要一个固定类型,因此您应该创建一个扩展BinaryTree<Integer>
的普通非泛型类。 (或者直接使用BinaryTree<Integer>
,不要单独创建一个类)