Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多态二叉搜索树类型不匹配错误_Java_Polymorphism_Binary Search Tree_Type Mismatch - Fatal编程技术网

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

Java 多态二叉搜索树类型不匹配错误,java,polymorphism,binary-search-tree,type-mismatch,Java,Polymorphism,Binary Search Tree,Type Mismatch,我正在为一个由非空树和空树对象组成的赋值创建一个多态二叉搜索树。每个非空树都有一个可比较的键和一个与其关联的值(以及一个左右树对象) 我正在编写一个查找方法,它接受一个键对象并返回与之关联的值 非空树: package tree; @SuppressWarnings("unchecked") public class NonEmptyTree<K extends Comparable<K>, V> implements Tree<K, V> { p

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

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

非空树:

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

当我尝试返回right.lookup或left.lookup时,eclipse给出了一个类型不匹配错误,并要求我将其转换为类型V,我不知道为什么。我们不允许在此项目中使用强制转换,因此我确实需要一些帮助

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

private Tree<K,V> left, right;
私有树左、右;

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

Nit:您正在检查
if(keytookfor.compareTo(key)>0)
在您的两个条件中,我怀疑您的意思是
请提供更多的类,例如,
的声明。这些都是类的相关部分。。。树接口声明lookup返回类型vt这就是为什么除非绝对必要,否则不应该
@SuppressWarnings
。这是我的proffesor编写的一个预制框架,已经在“确保代码不会由于Java中实现泛型的方式问题而发出警告”中进行了编码