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

时间:2015-04-02 07:23:44

标签: java polymorphism binary-search-tree type-mismatch

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

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

NonEmptyTree:

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;
    }
}

EmptyTree:

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

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

1 个答案:

答案 0 :(得分:1)

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

private Tree<K,V> left, right;

这样对left.lookup和right.lookup的调用将返回与包含类相同的V。