龙目岛可选

时间:2015-07-28 08:12:21

标签: java optional lombok

我有一个名为Address的课程,如下所示:

@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.fromNullable(this.line2);
   }

   // and a Builder
   public static class Builder {
     // builder methods
   }
}

在这里,我被迫写BuilderGetter,因为如果我想在使用Lombok时返回Optional,我必须将line2声明为Optional<String> 。这将生成一个接受Optional<String>

的构建器方法

有没有其他方法可以将lombok与Optional一起使用?

1 个答案:

答案 0 :(得分:13)

答案是否定的,而且可能永远不会。

您可能做错了:-) Optional不是null的替代品,也不是阻止NullPointerException的奇特方法。这表明问题是无法回答的,例如:一个空列表的平均年龄是多少。

永远不应该传递

Optional,而是尽快通过调用代码取消装箱。

另见https://www.voxxed.com/blog/2015/01/embracing-void-6-refined-tricks-dealing-nulls-java/

由于这些场景只是极少数,而且Lombok喜欢让程序员编写更好的代码,我不希望在Lombok中有它的支持。

披露:我是龙目岛的开发者。