我有一个程序可以创建几个对象并将每个对象添加到ArrayList,然后应该循环遍历ArrayList中的每个对象,并使用项目中另一个类的getter来显示每个对象的信息。我无法在foreach循环中获取对象以使用我其他类中的任何方法。这是我的主要内容,包括底部的故障循环:
import java.util.ArrayList;
public class ITECCourseManager {
public static void main(String[] args) {
ArrayList ITECCourse = new ArrayList();
ITECCourse infotech = new ITECCourse("Info Tech Concepts", 1100, 5, "T3050");
infotech.addStudent("Max");
infotech.addStudent("Nancy");
infotech.addStudent("Orson");
ITECCourse.add(infotech);
ITECCourse java = new ITECCourse("Java Programming", 2545, 3, "T3010");
java.addStudent("Alyssa");
java.addStudent("Hillary");
ITECCourse.add(java);
for (Object course : ITECCourse) {
System.out.println("Name: " + course.getName());
}
}
}
这是我项目中我需要使用的方法的另一个类:
public class ITECCourse {
public String name;
public int code;
public ArrayList<String> students;
public int maxStudents;
public String room;
ITECCourse(String courseName, int courseCode, int courseMaxStudents, String roomNum) {
name = courseName;
code = courseCode;
maxStudents = courseMaxStudents;
students = new ArrayList<String>();
room = roomNum;
}
public String getName() {
return name;
}
如果我用java.getName()替换course.getName(),代码就可以了。当我能够调用对象并直接从代码中的相同位置使用该方法时,我很困惑为什么我不能在ArrayList中使用foreach循环来为每个对象使用getter。
编辑:感谢您的回答,简单的错误只需进行两次/三次更改:在开头声明ArrayList<ITECCourse>
,将Object
循环中的for
更改为{{1}当然,我的arraylist从ITECCourse
更改为ITECCourse
,所以我的ITECCourse课程并没有混淆。
答案 0 :(得分:2)
对course.getName()
的调用不起作用,因为您已在循环中将course
定义为Object
而Object
没有方法{{1} }}。如果您在getName()
声明中添加了类型参数,例如ArrayList
,那么您可以遍历ArrayList<ITECCourse>
个实例列表,而不是ITECCourse
。
在旁注中,命名变量Object
只会导致混淆,因为它与您的班级相同。可能最好将变量命名为ITECCourse
。