我正在尝试制作一个二进制搜索树,这个类看起来像这样:
public class Node<T extends Comparable<T>> {
T data;
Node<T> left
Node<T> right;
int height;
public Node(T data) {
this.data = data;
this.left = null;
this.right = null;
this.height = 0;
}
}
我声明对象的客户端程序如下所示:
public static void main(String[] args) {
Node<T> a = new Node<T>(8);
}
然后出现错误,因为构造函数Node<T>(T)
引用了丢失的类型T。我想知道如何将T数据声明为int类型8。如何在不更改Node类的情况下做到这一点?
尝试
Node<Integer> a = new Node<>(8);
进一步阅读:https://docs.oracle.com/javase/tutorial/java/generics/types.html
定义泛型后,您需要特定的对象
public static void main(String[] args) {
Node<Integer> a = new Node<Integer>(8);
//or
Node<String> s = new Node<String>("Hello");
}
T作为泛型类类型,int Primitive类型,这就是为什么有一个名为Integer的类,它是int 的包装器
Node<Integer> a = new Node<>(8);
您必须将T
替换为类似Integer
:的类型
Node<Integer> a = new Node<>(8);
请注意,不能使用int
,因为只有对象/引用类型才允许作为泛型。不能使用基元类型。