J'ai une classe appelée Address
qui ressemble à ceci:
@Value
class Address {
@NotNull String userId;
@NotNull String line1;
String line2;
private Address(Builder b) {
// copy everything from builder
}
// override getter for line2 so that it returns Optional<String>
public Optional<String> getLine2() {
return Optional.ofNullable(this.line2);
}
// and a Builder
public static class Builder {
// builder methods
}
}
Ici, je suis obligé d'écrire Builder
et un Getter
parce que, si je veux retourner un Facultatif en utilisant Lombok, je devrai déclarer line2
comme Optional<String>
. Et cela va générer une méthode de génération qui accepte Optional<String>
!
Existe-t-il un autre moyen d'utiliser lombok avec Optional
?
La réponse est non, et elle ne le sera probablement jamais.
Vous vous trompez probablement :-) Optional
n'est pas un remplacement pour null
ni un moyen sophistiqué d'empêcher NullPointerException
. C'est pour indiquer que la question est sans réponse, comme: quel est l'âge moyen d'une liste de personnes vide.
Optional
s ne doit jamais être transmis, mais déballé par le code appelant dès que possible.
Voir aussi https://www.voxxed.com/blog/2015/01/embracing-void-6-refined-tricks-dealing-nulls-Java/
Étant donné que ces scénarios ne sont qu'une poignée et que Lombok aime permettre aux programmeurs d'écrire un meilleur code, je ne m'attends pas à ce qu'il soit jamais pris en charge dans Lombok.
Divulgation: je suis un développeur Lombok.