声明类型为t的新对象

qrjkbowd  于 2021-08-25  发布在  Java
关注(0)|答案(4)|浏览(258)

我正在尝试创建一个二叉搜索树,该类如下所示:

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。如何在不更改节点类的情况下实现这一点?

1wnzp6jl

1wnzp6jl1#

尝试

Node<Integer> a = new Node<>(8);

进一步案文:https://docs.oracle.com/javase/tutorial/java/generics/types.html

fnatzsnv

fnatzsnv2#

定义泛型后,需要特殊的对象

public static void main(String[] args) {

    Node<Integer> a = new Node<Integer>(8);
    //or
    Node<String> s = new Node<String>("Hello");
}
yxyvkwin

yxyvkwin3#

作为泛型类类型,int基元类型,这就是为什么有一个名为integer的类,它是int的 Package 器

Node<Integer> a = new Node<>(8);
yyhrrdl8

yyhrrdl84#

你必须更换 T 用一种像 Integer :

Node<Integer> a = new Node<>(8);

请注意,您不能使用 int 因为只有对象/引用类型才允许作为泛型。无法使用基元类型。

相关问题