创建一个通用对象并使用它在 java 中创建另一个通用对象
Creating one generic object and using it to create another generic object in java
我正在尝试编写与二叉树相关的代码。为此,我创建了一个名为 "Node" 的通用 class 并使用了另一个名为 "Tree" 的通用 class。
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
}
现在我正尝试在其他 class 中使用这些 class 的对象并面临问题。
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);
}
}
在创建 Tree 对象期间显示以下错误:-
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>
不匹配,因此编译器错误。
我正在尝试编写与二叉树相关的代码。为此,我创建了一个名为 "Node" 的通用 class 并使用了另一个名为 "Tree" 的通用 class。
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
}
现在我正尝试在其他 class 中使用这些 class 的对象并面临问题。
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);
}
}
在创建 Tree 对象期间显示以下错误:-
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>
不匹配,因此编译器错误。