2016-09-30 103 views
0

我有一个程序创建了一个对象并将其添加到一个ArrayList中,然后应该遍历ArrayList中的每个对象并使用另一个类中的getter该项目显示每个对象的信息。我无法使用我的foreach循环中的对象来使用其他类中的任何方法。这里是我的主,包括底部的麻烦循环:在另一个类中使用foreach循环(Java)

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; 
    } 

如果我更换course.getName ()与java.getName(),代码工作。我很困惑,为什么我不能在整个ArrayList中使用foreach循环来为每个对象使用getter,当我能够调用该对象并直接从代码中的相同位置使用该方法时。

编辑:谢谢你的回答,简单的错误只有使两/三变化:一开始申报ArrayList<ITECCourse>,在for循环改变ObjectITECCourse,当然从ITECCourseITECCourseList所以ISN改变我的ArrayList不要和我的ITECC课程混淆。

+1

https://docs.oracle.com/javase/tutorial/java/generics/ –

+0

将一个变量命名为一个类是一个非常糟糕的主意。 – shmosel

+1

想一想吧。一个'Object'是否有一个'getName()'方法? – nhouser9

回答

2

course.getName()的呼叫,因为你定义course为在循环的ObjectObject没有方法getName()不起作用。如果向ArrayList声明(如ArrayList<ITECCourse>)中添加类型参数,则可以迭代ITECCourse实例的列表,而不是Object

在附注上,命名变量ITECCourse只会导致混淆,因为它与您的课程相同。可能会更好地将您的变量命名为itecCourseList