web-dev-qa-db-fra.com

Facultatif à Lombok

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?

36
Dhrumil Upadhyaya

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.

Optionals 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.

14
Roel Spilker