Java泛型 - 从T到T的类型不匹配

sre*_*ish 4 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> 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.

use*_*ica 8

这是两个具有相同名称的类型参数.一个来自这里:

public class BinarySearchTree<T>
Run Code Online (Sandbox Code Playgroud)

一个来自这里:

public <T> BSTNode<T> insert
       ^^^
Run Code Online (Sandbox Code Playgroud)

摆脱箭头指向的那个.您已经使该方法采用T与类不同的自己的参数T.