Java泛型-从T到T的类型不匹配
我试图实现一个基本的二叉搜索树(与问题无关)。这就是我所拥有的:Java泛型-从T到T的类型不匹配,java,generics,Java,Generics,我试图实现一个基本的二叉搜索树(与问题无关)。这就是我所拥有的: 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
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;
}
}
公共类节点{
公共数据;
公共节点左;
公共节点权;
}
公共类二进制搜索树{
私有节点根;
公共节点插入(T项){
BSTNode newNode=新BSTNode();
newNode.data=项目;
if(root==null){
根=新节点;
}
返回newNode;
}
}
插入方法不完整。但是,我在'root=newNode;'上遇到以下编译错误if块中的行:
Type mismatch: cannot convert from BSTNode<T> to BSTNode<T>
类型不匹配:无法从BSTNode转换为BSTNode
我无法理解这一点。它们是相同的泛型类型。为什么编译器会抱怨
我将JDK 8与Eclipse Mars一起使用 这是两个同名的类型参数。这里有一个:
public class BinarySearchTree<T>
public <T> BSTNode<T> insert
^^^
公共类二进制搜索树
这里有一个:
public class BinarySearchTree<T>
public <T> BSTNode<T> insert
^^^
公共节点插入
^^^
把箭头指向的那个扔掉。您已使该方法采用自己的T
参数,与类的T
公共节点插入(K项)不同{
}
在方法中使用K而不是T
因为在参数化方法中需要另一个param标识符,所以T已经用于类。是的,这就是问题所在。谢谢