簡體   English   中英

為什么將int作為Object傳遞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM