【问题标题】:Java ArrayList for-loop lcv thought to be an object, not an intJava ArrayList for-loop lcv 被认为是一个对象,而不是一个 int
【发布时间】:2015-03-15 17:24:09
【问题描述】:

我正在尝试创建一个具有可变长度序列的数组,因此我决定使用 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 几次,但我仍然没有弄清楚哪里出了问题。

【问题讨论】:

  • 你在这个 ArrayList 中保留了哪些值?

标签: java arraylist


【解决方案1】:

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

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

这表示,“我要用整数填充这个 ArrayList”。这样,当您调用get() 时,它将返回Integer 而不是Object

这部分稍微高级一点,并不是特别重要,所以如果它超出您的想象,请不要担心:您可以将 Integer 分配给 int 的原因是因为一个名为 Auto unboxing 的概念。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2019-04-23
    • 2021-01-11
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多