有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java声明类型为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。如何在不更改节点类的情况下执行此操作


共 (4) 个答案

  1. # 1 楼答案

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

    public static void main(String[] args) {
        
        Node<Integer> a = new Node<Integer>(8);
        //or
        Node<String> s = new Node<String>("Hello");
    }
    
  2. # 2 楼答案

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

    Node<Integer> a = new Node<>(8);
    
  3. # 3 楼答案

    必须将T替换为类似Integer的类型:

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

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