多态二叉搜索树类型不匹配错误
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 相同
我正在为一个由 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 相同