¿Cómo reproduzco objetos de tipos incompatibles en una lista?

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 instanceofcheque no realiza ningún molde.

Student.class::isInstancey Student.class::castes sólo una preferencia mío, usted podría ir con p -> p instanceof Studenty p -> (Student)prespectivamente.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=311710&siteId=1
Recomendado
Clasificación