我有一个简单的AVL树实现,使用公共方法getMax()
,如下所示:
public class AVLTree <Data extends Comparable<Data>> {
public AVLTree() {
this.root = null;
}
public Data getMax() {
return getMaxNode(root).data;
}
...
}
当我使用Integer
输入形成树时,我不能使用getMax()
方法而不将结果转换为Integer
,这对我来说似乎很奇怪。这是一个例子:
AVLTree avltree = new AVLTree();
avltree.insert(10);
Integer i = (Integer)avltree.getMax(); <-- Here
System.out.println(avltree.getMax().getClass()); // Test
如果我删除(Integer)
,IDE会说“不兼容的类型:Comparable无法转换为Integer”。奇怪的是getClass()
的输出是class java.lang.Integer
。所以我的问题是:在这种情况下,当返回类型似乎是Integer
时,为什么我必须将输出转换为Integer
?