多态二叉搜索树类型不匹配错误

Polymorphic binary search tree type mismatch error

我正在为一个由 NonEmptyTree 和 EmptyTree 对象组成的赋值创建一个多态二叉搜索树。每个 NonEmptyTree 都有一个可比较的键和一个与之关联的值(以及右树和左树对象)。

我正在编写一个查找方法,它接受一个键对象和 return 与之关联的值。

非空树:

package tree;

@SuppressWarnings("unchecked")
public class NonEmptyTree<K extends Comparable<K>, V> implements Tree<K, V> {

    private K key;
    private V value;
    private Tree left, right;

    public NonEmptyTree(K key, V value) {
            this.key = key;
            this.value = value;
            left = right = EmptyTree.getInstance();//Singleton class
    }

    public V lookup(K keyToLookFor) throws NullPointerException{
        if (keyToLookFor.compareTo(key) > 0)
            return right.lookup(keyToLookFor);
        else if (keyToLookFor.compareTo(key) < 0)
            return left.lookup(keyToLookFor);
        else
            return value;
    }
}

空树:

    public V lookup(K keyToLookFor) {
        return null;
    }

当我尝试 return right.lookup 或 left.lookup 时,eclipse 给出类型不匹配错误并要求我将其转换为 V 类型,我不知道为什么。我们不允许在这个项目中使用转换,所以我真的可以使用一些帮助

您需要限制左右成员的类型:

private Tree<K,V> left, right;

这样,对 left.lookup 和 right.lookup 的调用将 return 与包含 class.

的 V 相同