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

标签 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;
    }
}

插入方法不完整。但是,我在“root = newNode;”上收到以下编译错误if block 中的行:

Type mismatch: cannot convert from BSTNode<T> to BSTNode<T>

我无法解决这个问题。它们是相同的通用类型。为什么编译器会提示?

我正在使用 JDK 8 和 Eclipse Mars。

最佳答案

这是两个同名的类型参数。一个来自这里:

public class BinarySearchTree<T>

还有一个来自这里:

public <T> BSTNode<T> insert
       ^^^

去掉箭头所指的那个。您已使方法采用自己的 T 参数,这与类的 T 不同。

关于Java 泛型 - 从 T 到 T 的类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34243673/

相关文章:

Java:按契约(Contract)注释设计

java - Java对象之间的有效通信

Delphi:OleVariant 和泛型

c# - 使用 LINQ 使搜索方法通用

java - 从泛型类调用的方法将返回什么类型?

generics - 我如何构造实现特征的潜在许多结构中的任何一个?

java - dbUnit : java. sql.SQLException 问题:已关闭语​​句

java split给出不同的数组长度

java - instanceof 和泛型的编译错误

Java ME图像异常