WesternGun:
Lorsque je récupère une entité étudiant de DB, le rendement du référentiel un annulable Optional<Student>
. Il a un birthdate
champ.
Optional<Student> getStudentById(String id);
Alors, comment puis-je écrire dans le style fonctionnel en une ligne pour obtenir la date de naissance de celui-ci, quand il est nul de retour nul, et quand n'est pas, retourner la date?
Je suis maintenant avec:
Date birthdate = studentRepository.getStudentById(id).isPresent() ?
studentRepository.getStudentById(id).get().getBirthdate() : null;
Mais je pense qu'il est laid à l' utilisation isPresent()
et ternaire; il est juste if/else
.
Et, cela ne fonctionnera pas:
Date birthdate = studentRepository.getStudentById(id).get().getBirthdate().orElse(null); // this does not work because orElse() cannot chain with getBirthdate()
Je suis avec Java 8.
Je ne pense pas qu'il est possible sans frais généraux, mais je suis ouvert aux suggestions.
Hadi J:
Essaye ça
studentRepository.getStudentById(id)
.map(Student::getBirthdate).orElse(null);