当前位置: 首页 > 面试题库 >

龙目岛的可选

干浩阔
2023-03-14
问题内容

我有一堂课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.ofNullable(this.line2);
   }

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

在这里,我不得不写Buildera,Getter因为如果我想在使用Lombok时返回Optional,则必须声明line2Optional<String>。这将生成一个接受的生成器方法Optional<String>

还有其他方法可以使用lombok Optional吗?


问题答案:

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

您可能做错了:-)
Optional并不是null预防的替代品,也不是预防的奇特方法NullPointerException。这表示该问题无法回答,例如:空人员列表的平均年龄是多少。

Optional绝对不应传递,而应尽快由调用代码取消装箱。

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

由于这些场景很少,并且Lombok希望使程序员能够编写更好的代码,所以我不希望Lombok会支持它。

披露:我是Lombok开发人员。



 类似资料:
  • 我有一个名为Address的类,如下所示: 在这里,我不得不编写生成器和Getter,因为如果我想在使用Lombok时返回一个Optional,我必须将第2行声明为Optional 是否有其他方法可以将lombok与

  • 我在gradle项目中使用lombok,希望创建一个jar文件,但每次我执行jar任务(无论是在控制台还是eclipse ide中触发)时,我都会发现错误,我的lombok导入在我使用lombok注释的类中找不到。输出示例: 搜索了一段时间后,我发现有一个适用于gradle和lombok的插件,但在使用较新的gradle版本编译时并不真正需要。我的gradle版本是3.4.1和lombok 1.6

  • 我试着在IntelliJ上使用Lombok和Maven和VRaptor,但它不起作用。 我已经在stackoverflow中阅读了一些信息,但没有解决我的问题,我已经在Intellij中启用了注释处理器,但仍然一无所获。 我也试图从命令行(Windows)编译它,但没有成功。 我还尝试在没有maven的情况下创建另一个项目,添加库,创建一些用于测试的类,它可以完美地工作、编译和运行。 有什么帮助吗

  • 我在Intellij遇到了一个奇怪的问题。我正在使用Lombok(1.18.2)、IntelliJ(2018.2.2)和JUnit 5在gradle 4多模块项目中。 我花了好几个小时来复制这个。 > 运行所有具有覆盖率测试用例。 移除龙目镜并在此之后生成吸气剂和定型剂也没有效果。 尝试了一切来解决这个问题(启用注释处理器、Lombok插件、清理构建),但没有成功。 编辑1: Root build

  • 我在我的实体中使用了lombok注释“@Data”。我试图通过Dto Converter使用getter,就像我在没有lombok的情况下正常使用一样。不知何故,它没有像我预期的那样工作。看起来我的lombok没有创建getter,或者我没有访问权限? Dto转换器:

  • 问题内容: 我正在尝试向使用Lombok的现有Java Maven项目添加常规功能。不幸的是,当我用下面的pom片段启用groovy-maven- eclipse编译器时,我的带有lombok注释的Java文件无法编译。据我所知,Lombok根本不参与Java文件的编译。 我还应该指出,在eclipse中(使用m2e)一切正常。当我尝试执行mvn软件包时,会出现我的问题。 问题答案: @Todd: