公共方法的通用返回类型

时间:2014-09-03 04:56:34

标签: java

我有一个简单的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

0 个答案:

没有答案