【问题标题】:for-loop & ArrayList<Integer>for-loop & ArrayList<Integer>
【发布时间】:2026-01-10 08:10:02
【问题描述】:

这是 Sun 认证 Java 助理学习指南第 2 章中的一个简单练习,我遇到了麻烦。当我尝试编译下面的类时,我收到以下错误消息:

"错误:ArrayList类型不带参数 ArrayList hookSizesList = new ArrayList;"

import java.lang.Iterable;

public class ArrayList {
public static void main(String[] args) {

    Integer hookSizeList;
    ArrayList<Integer> hookSizesList = new ArrayList<Integer>();
    hookSizesList.add(1);
    hookSizesList.add(4);
    hookSizesList.add(5);

    for (Integer hook: hookSizesList) System.out.print(hook + " ");
}
}

非常感谢您提前提供任何帮助,谢谢!

【问题讨论】:

  • 可能是因为它没有显示任何研究成果;)

标签: java for-loop arraylist iteration


【解决方案1】:

你有很多错误,这里是更新的 sn-p

import java.util.*;

public class Numbers {
    public static void main(String[] args) {
        List<Integer> hookSizesList = new ArrayList<Integer>();
        hookSizesList.add(1);
        hookSizesList.add(4);
        hookSizesList.add(5);

        for (Integer hook: hookSizesList) {
             System.out.print(hook + " ");
        }
    }
}

【讨论】:

  • 我很尴尬我使用“ArrayList”作为类名。我改变了它和我的 import 语句,就像你的 sn-p 一样,它编译得很好!感谢您快速详细的响应时代!
【解决方案2】:

您可能想使用java.util.ArrayList 类。但是由于您将自己的类命名为ArrayList,因此这是您的程序使用的类,而您的ArrayList 类不采用任何通用参数。更改您的班级名称并导入java.util.ArrayList

【讨论】:

  • 更改了我的类名和导入语句,它可以工作,感谢 JB Nizet 的快速响应!
【解决方案3】:

嗯,有一些奇怪的事情:

  1. 首先您没有导入 java.util.ArrayList。
  2. 您不需要导入 java.lang.Iterable,因为 java.lang 中的类是自动导入的。
  3. 您的类与 ArrayList 同名,这不是一个好主意。当你写“ArrayList hookSizesList = new ArrayList();”您正在初始化 java.util.ArrayList 但您自己的类,它不是泛型类。尝试做:

导入 java.util.ArrayList;

public class MyArrayList {

public static void main(String[] args) {
Integer hookSizeList; //<--looks useless
ArrayList<Integer> hookSizesList = new ArrayList<Integer>();
hookSizesList.add(1);
hookSizesList.add(4);
hookSizesList.add(5);

for (Integer hook: hookSizesList) System.out.print(hook + " ");
}
}

【讨论】:

  • 法比奥,作为一个小孩子,我很感激你对我的问题的明确回答。没有它们,像我这样的孩子要自学编程会困难得多。我希望我有声望点来投票所有这些答案!
【解决方案4】:

您创建的类名为 ArrayList。

public class ArrayList {

示例所涉及的类是 java.util.ArrayList。

更改类的名称并导入 java.util.ArrayList。

【讨论】:

    【解决方案5】:

    你的类不使用泛型,所以你不能用&lt;Integer&gt;参数化ArrayList。除此之外,您似乎没有实现add() 方法或实现Iterable 或其他任何事情。但要解决泛型问题,您必须有一个类声明,如:public class ArrayList&lt;E&gt;

    也许你想import java.lang.ArrayList; ?在这种情况下,您可能需要考虑将您的课程重命名为其他名称。

    【讨论】:

      【解决方案6】:

      您的代码中定义的ArrayList 类(不是java.util.ArrayList&lt;E&gt;)没有定义任何泛型类型参数,因此您不能使用new ArrayList&lt;Integer&gt;(),而只能使用new ArrayList()(变量声明相同)。

      【讨论】:

      • 这是有道理的。作为一个菜鸟,我很欣赏你的快速澄清迈克尔!非常鼓舞人心!
      【解决方案7】:

      您应该为您的班级使用不同的名称。将您的课程从 ArrayList 重命名为其他名称。

      【讨论】: