スタックの配列を作成しようとしています。配列内の各スタックはタイプint
です。
次のような配列を作成する Stack<Integer>[] numbers = new Stack<Integer>[3];
と、コンパイルエラー" Cannot create a generic array of Stack<Integer>
"が発生します。そのため、の代わりにワイルドカードタイプを使用してスタックの配列を作成しようとしていますが、このエラーは発生
Integer
しません。ただし、次のように(ワイルドカード " "タイプの) スタックの1つ
にプッシュしようとする と、コンパイルエラー" "が発生します。
では、どのようにしてタイプのスタックの配列を適切にインスタンス化できますか?現在のところ、これらのスタックでプッシュ/ポップ操作を実行することはできません...
int
?
this.numbers[stackIndex].push(i);
The method push(capture#1-of ?) in the type Stack<capture#1-of ?> is not applicable for the arguments (int)
int
これについての私の推論は、ハノイの塔ゲームをプログラムする試みです。
Stack
3つのロッドのそれぞれがタイプint
であり、各リングがとして表されint
、3つのロッドが一緒になって3つのスタックの配列として含まれるよう
にしたかったのです。次にいくつかのサンプルコードを示します。
import java.util.Stack;
public class StackTest {
Stack<?>[] numbers;
public StackTest(int stackLength) {
this.numbers = new Stack<?>[stackLength];
}
public void fillStack(int stackIndex, int numRings) {
for (int i = numRings; i >= 0; i--) {
// this statement has a compile error!
this.numbers[stackIndex].push(i);
}
}
public static void main(String[] args) {
int numberOfRods = 3;
StackTest obj = new StackTest(numberOfRods);
int rodNumber = 0, numberOfRings = 4;
obj.fillStack(rodNumber, numberOfRings);
}
} // end of StackTest