2017-08-12 93 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);