您是否知道像@NonNull这样的注释来表示“返回”值?

时间:2018-08-24 03:49:00

标签: nullpointerexception return-value lombok

下面有两个示例在源而不是下游检查或捕获Null返回值。今天,我遇到了一个完美的用例,同时将空检查样板粘贴到委托函数中(它不需要执行任何代码,也不需要做)。

问题:

  • 还有其他/库/注释来实现这一目标
  • 并愿意编写自定义代码来重塑这么多轮子吗?

理想情况下,我想使用Lombok的@NonNull构造来检查函数的返回值,例如:

  @NonNull private String isNullReturnValueCaught(){
  }  

可悲的是,此用例已被龙目岛拒绝:

以及其他选择,请检查局部变量。

  private String isNullReturnValueCaught(){

      @NonNull String rslt;

      rslt = null;

      return rslt;
  }

1 个答案:

答案 0 :(得分:1)

使用Optional。它已经存在in Guava since at least version 10,并且Java 7对其周围的API进行了形式化。

使用Optional的模式是,您总是返回它的一个实例,并且总体原理很简单:

  • 您可以返回一个空的Optional,因为您可以恢复为默认值,或者
  • 您明确 不是 ,可以返回一个空的Optional,并且同意如果值不存在,则您的应用程序应该violently blow up

请提前警告: Optional不能代替空检查。它们仅用于使您的代码更易于维护,并且在您通常知道< em>恰好当您获得空值时要做的事情。