【问题标题】:What is the best way to use Optional with null check in Java? [duplicate]在 Java 中使用 Optional 和 null 检查的最佳方法是什么? [复制]
【发布时间】:2019-12-28 17:56:09
【问题描述】:

根据变量的isNull,我有一个变量(testvariable),我需要进行如下方法调用

if (testvariable != null) 
    method(testvariable);
 else 
    method();

在 Optional 中简化代码的最佳方法是什么

【问题讨论】:

  • Optional 并非旨在避免或替换空检查。你的代码绝对没问题。
  • Optional.ofNullable(testVariable).ifPresentOrElse(this::method, this::method)(但这不是 Optional 的用途)
  • 请保持您的代码不变,并且不要为此使用 Optional。可选并不是要替代if。成为一名优秀程序员的一部分是知道如何编写尽可能易读的代码,以便在您不再可用时其他人可以使用它。

标签: java java-8


【解决方案1】:

鉴于您的method 函数返回一个值(不是void),您可以使用maporElseGet 函数,如下所示:

return Optional.ofNullable(testVariable)
    .map(tv -> method(tv))
    .orElseGet(() -> method());

map 函数将您的可选项转换为包含 method 的返回值,但前提是可选项包含值。如果testVariable 为空,则将从传递给orElseGet 方法的函数中检索结果。

如果method 返回void,则不要使用OptionalOptional 最适合用来模拟的存在与否。

【讨论】:

  • 如果方法调用是voidreturn 没有任何意义
  • 请注意,OP 询问了一种简化代码的方法……
猜你喜欢
  • 1970-01-01
  • 2013-06-22
  • 2017-04-27
  • 2020-04-05
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
相关资源
最近更新 更多