我正在尝试创建一个堆栈数组,其中数组中的每个堆栈都是int
类型。
如果我创建这样的数组:Stack<Integer>[] numbers = new Stack<Integer>[3];
,则存在编译错误“Cannot create a generic array of Stack<Integer>
”。所以,我正在尝试使用通配符类型而不是Integer
创建堆栈数组,然后它 not 会出现此错误。
但是,如果我然后尝试将int
推入其中一个堆栈(通配符“?
”类型),如下所示:this.numbers[stackIndex].push(i);
,则存在编译错误“{{1} }”。
那么,我如何正确实例化The method push(capture#1-of ?) in the type Stack<capture#1-of ?> is not applicable for the arguments (int)
类型的堆栈数组?截至目前,我无法在这些堆栈上执行推/弹操作...
int
类型Stack
,每个环都表示为int
,并且三根杆一起被包含为三个杆的阵列堆栈。
int
答案 0 :(得分:2)
必须是原始Stack[]
,否则您可以使用List<Stack<YourClass>> lstStack = new ArrayList<Stack<YourClass>>()
。
在这种情况下,我更愿意使用
List<Stack<Integer>> lstStack = new ArrayList<Stack<Integer>>(stackLength);
答案 1 :(得分:0)
一种解决方案可能是:
public class StackInteger extends Stack<Integer> {
}
然后:
StackInteger[] numbers = new StackInteger[3];
甚至:
Stack<Integer>[] numbers = new StackInteger[3];
答案 2 :(得分:0)
我的猜测是你应该推送Integer
而不是int
:
this.numbers[stackIndex].push(Integer.valueOf(i));