[英]Why is int being passed as Object?
import java.util.ArrayList;
class Stack {
private ArrayList stack;
private int pos;
Stack() {
stack = new ArrayList();
pos = -1;
}
int pop() {
if(pos < 0) {
System.out.println("Stack underflow.");
return 0;
}
int out = stack.get(pos);
stack.remove(pos);
pos--;
return out;
}
}
我正在嘗試編寫一個基本的可變長度堆棧,這是我的代碼的片段。 運行此命令時,出現錯誤:
Main.java:16: error: incompatible types
int out = stack.get(pos);
^
required: int
found: Object
為什么將此作為對象傳遞?
目前,你是不是定義在舉行泛型類型ArrayList
稱為stack
所以你會得到一個原始Object
從返回類型ArrayList.get
:
您需要更換
ArrayList stack;
同
ArrayList<Integer> stack;
同樣
stack = new ArrayList();
同
stack = new ArrayList<Integer>(); // new ArrayList<>(); for Java 7
也看看使用java.util.Stack
stack
沒有被告知它擁有什么變量類型,所以它訴諸於通用Object
。
ArrayList stack;
應該
ArrayList<Integer> stack;
stack.get(int)
方法返回一個對象。 這里的int只是索引。 如果要在索引int
處獲取堆棧的值,並且它返回Integer
,則需要執行以下操作:
Integer x = stack.get([int index position]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.