En option <T> quand IsPresent () obtenir la propriété ou nulle lorsqu'elle est nulle; fonctionnel en Java 8

WesternGun:

Lorsque je récupère une entité étudiant de DB, le rendement du référentiel un annulable Optional<Student>. Il a un birthdatechamp.

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);

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=183242&siteId=1
conseillé
Classement