繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM