我想创建堆叠的阵列,其中所述阵列中的每个堆的类型为int
。
如果我创建这样的阵列: Stack<Integer>[] numbers = new Stack<Integer>[3];
中,在编译错误“ Cannot create a generic array of Stack<Integer>
”。 所以,我想创建堆栈与通配符类型而非阵列Integer
,它再没有这个错误。
但是,如果我然后试图推动一个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
型的int
,每个环被表示为int
和三个杆一起被包含作为三个堆块的阵列。 下面是一些示例代码:
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