3 回答

TA貢獻1847條經驗 獲得超11個贊
return list.stream() .filter(Student.class::isInstance) .map(Student.class::cast) .collect(Collectors.toList());
它應該在那里進行強制轉換,否則,它仍然是一個Stream<Person>
. 該instanceof
檢查不執行任何強制轉換。
Student.class::isInstance
和Student.class::cast
只是我的偏好,您可以分別選擇p -> p instanceof Student
和p -> (Student)p
。

TA貢獻1850條經驗 獲得超11個贊
你需要一個演員:
public static List<Student> findStudents(List<Person> list)
{
return list.stream()
.filter(person -> person instanceof Student)
.map(person -> (Student) person)
.collect(Collectors.toList());
}

TA貢獻1789條經驗 獲得超8個贊
另一種選擇。
public static List<Student> findStudents(List<Person> list)
{
return list.stream()
.filter(s -> Student.class.equals(s.getClass()))
.map(Student.class::cast)
.collect(Collectors.toList());
}
添加回答
舉報