我正在尝试使用可变长度序列创建一个数组,所以我决定使用一个ArrayList。
由于我想找到数字序列的总和,我尝试使用ArrayList.get(int index)方法获取ArrayList中元素的值,但NetBeans向我抱怨{{1以下代码:
incompatible types: Object cannot be converted to int
具体而言,行int seqLen = sequence.size(); // number of elements in ArrayList sequence
int seqSum = 0; // sum of all elements in the sequence
for(int i = 0; i <= seqLen; i++) {
int seqPart = sequence.get(i);
seqSum+= seqPart;
}
我不确定为什么它认为int seqPart = sequence.get(i);
是i
而不是object
,这段代码对于程序的运行至关重要。
基本上,我在这里做错了什么,我现在已经过几次关于ArrayList的JavaDoc,但我还是没有弄清楚是什么问题。
答案 0 :(得分:1)
如果您查看the JavaDoc,您会注意到get
返回E
。如果您没有定义E是什么,它将默认为Object。无法将对象分配给int。像这样定义你的arraylist:
List<Integer> sequence = new ArrayList<>();
这说,&#34;我将用整数&#34;填充这个ArrayList。这样,当您致电get()
时,它会返回Integer
而不是Object
。
这一部分更高级,并不是非常重要,所以如果它超越你的头脑,请不要担心:你可以将Integer
分配给int
的原因是因为称为Auto unboxing的概念。