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



我正在尝试编写与二进制树相关的代码。为此,我创建了一个名为"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
}

Tree.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>,因此出现编译器错误。

最新更新