我试图实现一个基本的二进制搜索树(与问题无关).这就是我所拥有的:
public class BSTNode<T> {
public T data;
public BSTNode<T> left;
public BSTNode<T> right;
}
public class BinarySearchTree<T> {
private BSTNode<T> root;
public <T> BSTNode<T> insert(T item){
BSTNode<T> newNode = new BSTNode<T>();
newNode.data = item;
if(root == null){
root = newNode;
}
return newNode;
}
}
Run Code Online (Sandbox Code Playgroud)
插入方法不完整.但是,我在'root = newNode;'上收到以下编译错误 if块中的行:
Type mismatch: cannot convert from BSTNode<T> to BSTNode<T>
Run Code Online (Sandbox Code Playgroud)
我无法绕过这个.它们是相同的通用类型.为什么编译器会抱怨?
我在Eclipse Mars中使用JDK 8.
这是两个具有相同名称的类型参数.一个来自这里:
public class BinarySearchTree<T>
Run Code Online (Sandbox Code Playgroud)
一个来自这里:
public <T> BSTNode<T> insert
^^^
Run Code Online (Sandbox Code Playgroud)
摆脱箭头指向的那个.您已经使该方法采用T与类不同的自己的参数T.