java - 在java中创建一个通用对象并使用它来创建另一个通用对象

标签 java generics element

我正在尝试编写与二叉树相关的代码。为此,我创建了一个名为“Node”的通用类,并使用了另一个名为“Tree”的通用类。

Node.java

public class Node<T>{

   private T element;

   private Node<T> leftObj;

   private Node<T> rightObj;

   public Node(T element){

     this.element=element;

     this.leftObj=null;

     this.rightObj=null;
   }
   //remaining are getter and setter method

}

树.java:

public class Tree<T>{

    private Node<T> root;

    public Tree(Node<T> node){

    this.root=node;

  }

 // remaining is adding node and deleting node method

}

现在我尝试在其他类中使用这些类的对象并面临问题。

abc.java

public class abc{

    public static void main(String[] args){

       Node<Integer> tempNode = new Node<Integer>(1);

       //getting error at following line

       Tree<Node<Integer>> tree = new Tree<Node<Integer>>(tempNode);

    }

}

在树对象创建过程中显示以下错误:-

The constructor Tree<Node<Integer>>(Node<Integer>) is undefined

请指导我解决这个问题并帮助我理解通用概念(我是这个主题的新手。)

最佳答案

它不是一个整数节点树。它只是一棵整数树。

考虑ArrayList<Integer> 。它是一个整数列表。它不是整数数组元素的列表(即 ArrayList<ArrayElement<Item>> )

您只需将声明更改为:

Tree<Integer> tree = new Tree<>(tempNode);
<小时/>

何时 T被视为 Node<Integer> ,正如您所提供的,那么构造函数实际上变成了

public Tree(Node<Node<Integer>> node){

您正在传递一个 Node<Integer>不匹配,因此编译器错误。

关于java - 在java中创建一个通用对象并使用它来创建另一个通用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443144/

相关文章:

css - 随不同屏幕分辨率移动的页面元素

子元素而不是整个元素的 CSS Hover 属性

java - 使用自签名证书(包括中间 CA)部署 Spring Boot 应用程序

java - AWS使用aws java sdk配置获取

swift - 无法推断通用参数 T。工厂方法

java - POJO 对象的 JAX-RS 通用工厂

jQuery - 将元素传递给函数

java - 非法参数异常 : argument type mismatch in Hibernate

java - 合并不同的持久单元

java - 具有冗余类型参数的泛型方法