[英]Problem with creating generic Stack class in Java that calls methods from LinkedList class
我正在嘗試使用基本堆棧方法(包括 push、pop 等)創建一個泛型類。我正在嘗試使用類型 E,但不斷收到錯誤消息,例如“E 無法轉換為 int”。 對於這些方法,我正在調用我在另一個名為 LinkedList 的文件中創建的其他方法,該文件具有 removeLastNode 等。我做錯了什么?
public class Stack<E>
{
private LinkedList Stack = new LinkedList();
private int size;
private class Node
{
private int data;
private Node next;
public Node(int item)
{
data = item;
next = null;
}
}
public Stack()
{
size = 0;
}
public void push(E data)
{
Stack.addLastNode(data);
size++;
}
public E pop()
{
if (size == 0)
throw new EmptyStackException();
else
Stack.removeLastNode();
size--;
}
public E top()
{
data = Stack.removeLastNode();
Stack.addLastNode(data);
if (size == 0)
throw new EmptyStackException();
else
return data;
}
public int size()
{
return size;
}
public boolean isEmpty()
{
if (size == 0)
return true;
else
return false;
}
}
Stack.java:38: error: incompatible types: E cannot be converted to int
Stack.addLastNode(data);
^
where E is a type-variable:
E extends Object declared in class Stack
Stack.java:53: error: incompatible types: void cannot be converted to int
data = Stack.removeLastNode();
^
Stack.java:59: error: incompatible types: int cannot be converted to E
return data;
^
where E is a type-variable:
E extends Object declared in class Stack
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
3 errors
您正在嘗試將Node
對象作為int
返回,但事實並非如此。
相反,返回Node
對象的data
字段,例如pop()
,它應該返回int
:
Node node = Stack.removeLastNode();
return node.data;
----
一些錯誤,例如在top()
方法中首先檢查大小,而在pop()
您目前甚至沒有 return 語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.