
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