Java ArrayList for-loop lcv被认为是一个对象,而不是一个int

Java ArrayList for-loop lcv thought to be an object, not an int

我正在尝试创建一个具有可变长度序列的数组,所以我决定使用 ArrayList。

因为想求数列的和,所以尝试用ArrayList.get(int index)方法获取ArrayList中某个元素的值,但是NetBeans向我抱怨关于 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);

我不确定为什么它认为 iobject 而不是 int,并且这段代码对于程序的运行至关重要。

基本上,我在这里做错了什么,我已经检查了 ArrayList 的 JavaDoc 几次,但我仍然没有弄清楚哪里出了问题。

如果您查看 the JavaDoc,您会注意到 get return 是 E。如果您不定义 E 是什么,它将默认为 Object。不能将对象分配给 int。像这样定义你的数组列表:

List<Integer> sequence = new ArrayList<>();

这表示,"I'm going to fill this ArrayList with Integers"。这样,当您调用 get() 时,它会 return 一个 Integer 而不是 Object

这部分有点高级,不是特别重要,所以如果它超出了您的理解范围,请不要担心:您可以将 Integer 分配给 int 的原因是名为 Auto unboxing 的概念。