作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我试图实现一个基本的二叉搜索树(与问题无关)。这就是我所拥有的:
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/
我是一名优秀的程序员,十分优秀!