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已经用于类。

是的,这就是问题所在。谢谢