2016-09-30 31 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