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());
}
添加回答
举报