2017-08-12 61 views
-4

我無法獲得學生的標記屬性,不明白爲什麼。java列表獲取類屬性

public class StudentTest 
{ 
    public static int numberPassed(List students) 
    { 
     int count =0; 
     for(int i = 0; i < students.size();i++ ) 
     { 
     System.out.println(students.get(i).mark); 
     } 
     return count; 
} 
+1

'名單students' - 你刪除的類型。列表中的每一個元素都被當作'Object'對待' – UnholySheep

+0

類似'(Student)students.get(i)' –

+1

@cᴏʟᴅsᴘᴇᴇᴅ爲什麼會引入cast的開銷?只是首先使用泛型。 –

回答

0

在Java中,每一個列表持有的對象,所以操作list.get(i)將返回一個Object。如果要對Student類實例做一些操作,則需要檢查該對象是否爲Student類實例,然後將其轉換爲Student類。

如果您的列表僅包含學生,您可以像這樣添加generic typeList<Student> stidents。然後操作list.get(i)將返回一個Student實例。但是這兩種方式,您只能將Student對象添加到此列表中。

總之,你有兩個選擇:

使用泛型列表類型:

public static int numberPassed(List<Student> students){ 
     ... 
} 

或投:

Student student = (Student)students.get(i); 
System.out.println(student.mark);