[英]Java generics - type mismatch from T to T
我试图实现一个基本的二进制搜索树(与问题无关)。 这就是我所拥有的:
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;
}
}
插入方法不完整。 但是,我在'root = newNode;'上收到以下编译错误 if块中的行:
Type mismatch: cannot convert from BSTNode<T> to BSTNode<T>
我无法绕过这个。 它们是相同的通用类型。 为什么编译器会抱怨?
我在Eclipse Mars中使用JDK 8。
这是两个具有相同名称的类型参数。 一个来自这里:
public class BinarySearchTree<T>
一个来自这里:
public <T> BSTNode<T> insert
^^^
摆脱箭头指向的那个。 你已经使该方法采用了与类T
不同的T
参数。
public <K> BSTNode<K> insert(K item){
}
并在您的方法中使用K而不是T.
因为在参数化方法中需要另一个参数标识符,所以T已经用于类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.