0
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

なぜこれがオブジェクトとして渡されるのですか?

4

3 に答える 3

3

ArrayList現在、 calledで保持されているジェネリック型を定義していないstackため、次の場所から生のObject戻り型を取得しArrayList.getます。

交換する必要があります

ArrayList stack;

ArrayList<Integer> stack;

同様に

stack = new ArrayList();

stack = new ArrayList<Integer>(); // new ArrayList<>(); for Java 7

使用もご覧くださいjava.util.Stack

于 2013-01-04T00:39:25.273 に答える
1

stack保持している変数タイプが通知されなかったため、ジェネリックに頼りObjectます。

ArrayList stack;

する必要があります

ArrayList<Integer> stack;
于 2013-01-04T00:40:23.793 に答える
1

このstack.get(int)メソッドはオブジェクトを返します。ここでのintは単なるインデックスです。インデックスでスタックの値を取得する必要がありint、それが返されるInteger場合は、次のようにする必要があります。

Integer x = stack.get([int index position]);

于 2013-01-04T00:40:37.257 に答える