
Optional?
A container object which may or may not contain a non-null value.


Jérôme
Tech Lead / Architecte / Compagnon du devoir
onepoint
 @jtama ![]()
public class LeMondeExterieurConfig {
    private Optional<String> login;
    private Optional<String> password;
    private Optional<Boolean> skipLogin;
}public interface LeMondeExterieurAccess {
     Optional<Person> findById(UUID id);
     List<Person> findByName(String name);
     Person findByNir(String nir) throws NotFoundException;
}
✔️Pain de campagne, sinon baguette
private Optional<Pain> getPainDeCampagne() { /*TODO implement*/ }
Pain pain = getPainDeCampagne().orElse(baguette);✔️Si le boucher du centre a de la charcuterie, sinon chez le boucher BEAUCOUP plus loin.
private Optional<Charcuterie> getCharcuterieDuCentre() {
    /*TODO implement*/
}
private Charcuterie getCharcuteriePlusLoin() {
    /*TODO Je sens que ça va être long.. 💀*/
}
Charcuterie = getCharcuterieDuCentre().orElse(getCharcuteriePlusLoin());
Charcuterie = getCharcuterieDuCentre()
    .orElseGet(() -> getCharcuteriePlusLoin());✔️Fromage à raclette (ou core panic)
Fromage morbier = maybeFromage.orElseThrow(() -> new ThreadDeath());
✔️Si on trouve le prix du cadeau on le donne le prix, sinon on donne 20€.
double participation = cadeau
    .map(cadeau->cadeau.getPrix())
    .orElse(20l);✔️Si le caviste a du Touraine, on en prend

caviste.getTouraine().ifPresent(bouteille -> onEnPrend(bouteille));✔️Si le caviste a du Touraine ET qu’il n’est pas trop cher, on en prend.
caviste.getTouraine()
    .filter(bouteille -> pasTropCher(bouteille))
    .ifPresent(bouteille -> onEnPrend(bouteille));✔️Si le primeur est ouvert ET qu’il a de la mangue, on prend, sinon de l’ananas.
maybePrimeur /*Optional<Primeur>*/
  .map(primeur -> primeur.getMangue());
maybePrimeur /*Optional<Primeur>*/
  .map(primeur -> primeur.getMangue()); /*Optional<Optional<Fruit>>*/
maybePrimeur /*Optional<Primeur>*/
  .flatMap(primeur -> primeur.getMangue()) /*Optional<Fruit>*/
  .orElse(new Ananas());✔️Si je trouve les clefs dans mon sac je les utilise, sinon je passe par la fenêtre.
maybeClef
  .ifPresentOrElse(
      clef -> utilise(clef),
      () -> passeParLaFenêtre());...
if (optional.isPresent()) {
    var value = optional.get();
// NOOOOOOOOOOOOOOOOON !!!!
}
...String code = Optional.ofNullable(app.getCodeImputationDefaut())
                .orElse(Strings.EMPTY);String value = Optional.ofNullable(monService.getValue())
                .orElse(null);Merci \o/ !
Crédits photos: Malcolm Browne, Wokandapix, Warner