函数以递归方式返回的“类型不匹配”

时间:2014-11-08 02:21:03

标签: java recursion

我有一个函数返回一种泛型类K,它扩展了Comparable接口。此函数以递归方式调用自身。有趣的是,当它被调用时,我收到错误Type mismatch: cannot convert from Comparable to K.

public class NonEmptyTree<K extends Comparable<K>, V> implements Tree<K, V> {
    Tree right;
    K key;
    ...
    public K max() throws EmptyTreeException {
        try {
            return right.max(); // "Type mismatch: cannot convert from Comparable to K"
        } catch (EmptyTreeException e) {
            return key;
        }
    }
    ...
}

将return语句更改为return (K) right.max();会删除错误并产生预期的行为。

为什么必须使用强制转换?如何生成不需要强制转换的代码?

1 个答案:

答案 0 :(得分:1)

问题出在right的声明中。

而不是

Tree right;

应该是:

Tree<K, V> right;