声明类型为T的新对象



我正在尝试制作一个二进制搜索树,这个类看起来像这样:

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,因为只有对象/引用类型才允许作为泛型。不能使用基元类型。

最新更新