我正在尝试在 Java 上编写 Stack 结构。我的代码如下所示:
class Stack<T>{
private static class Node<T>{
private T data;
private Node<T> next;
public Node(T data){
this.data = data;
}
}
private Node<T> top;
public Stack(){
top = null;
}
public Stack(Node<T> top){
this.top = top;
}
public static void main(String []args){
Node<Integer> stackNode = new Node<Integer>(1);
Stack<Node<Integer>> myStack = new Stack<Node<Integer>>(stackNode);
}
}
在 main 方法中,我首先用 Integer 1 初始化一个名为 stackNode 的节点,这是可行的。 然后我尝试做的是用 stackNode 作为顶级节点初始化我的 Stack。这不起作用,当我编译时出现错误:
Stack.java:56: error: incompatible types: Node<Integer> cannot be converted to Node<Node<Integer>>
Stack<Node<Integer>> myStack = new Stack<Node<Integer>>(stackNode);
Note: Some messages have been simplified; recompile with
-Xdiags:verbose to get full output 1 error
最佳答案
Stack
和 Node
应该有相同的类型:
Node<Integer> stackNode = new Node<Integer>(1);
Stack<Integer> myStack = new Stack<Integer>(stackNode);
顺便说一句,使用 <>
Java 7 中引入的语法可以稍微清理一下代码:
Node<Integer> stackNode = new Node<>(1);
Stack<Integer> myStack = new Stack<>(stackNode);
关于java - 不兼容的类型在 Java 中初始化泛型类型的堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51101276/