This question already has answers here:
What is a raw type and why shouldn't we use it?
(15个答案)
3年前关闭。
我有一个程序,它创建几个对象并将每个对象添加到ArrayList中,然后应该遍历ArrayList中的每个对象,并使用项目中另一个类的getter来显示有关每个对象的信息。我无法在我的foreach循环中获取对象以使用其他类中的任何方法。这是我的主要内容,包括底部的故障循环:
这是我项目中另一个需要使用的方法的类:
如果我将java.getName()替换为course.getName(),则该代码有效。当我能够调用对象并直接在代码中的同一位置使用该方法时,为什么不能在ArrayList上使用foreach循环对每个对象使用getter,我感到困惑。
编辑:谢谢您的回答,简单的错误只需要进行两次/三个更改:在开始时声明
(15个答案)
3年前关闭。
我有一个程序,它创建几个对象并将每个对象添加到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
更改为ITECCourse
,当然也将我的arraylist从到ITECCourse
,因此与我的ITECCourse类没有混淆。 最佳答案
调用course.getName()
无效,因为您已在循环中将course
定义为Object
,并且Object
没有方法getName()
。如果在ArrayList
声明中添加类型参数(例如ArrayList<ITECCourse>
),则可以遍历ITECCourse
实例列表而不是Object
。
附带说明一下,命名变量ITECCourse
只会引起混乱,因为它与您的类相同。最好将变量命名为itecCourseList
。
09-30 16:57