Jennifer Lawrence :
Mi pregunta es: Dada una lista de personas, devolver todos los estudiantes.
Aquí están mis clases:
clase de persona
public class Person {
}
clase estudiante
public class Student extends Person {
}
Método
public static List<Student> findStudents(List<Person> list) {
return list.stream()
.filter(person -> person instanceof Student)
.collect(Collectors.toList());
}
Estoy recibiendo un error de compilación: incompatible types: inference variable T has incompatible bounds
¿Cómo puedo devolver todos los estudiantes de la lista mediante corriente sin conseguir este error.
Andrew Tobilko:
return list.stream()
.filter(Student.class::isInstance)
.map(Student.class::cast)
.collect(Collectors.toList());
Debe ser un elenco allí, de lo contrario, sigue siendo una Stream<Person>
. El instanceof
cheque no realiza ningún molde.
Student.class::isInstance
y Student.class::cast
es sólo una preferencia mío, usted podría ir con p -> p instanceof Student
y p -> (Student)p
respectivamente.