是否可以将此代码转换为 Java 8 Optional 单行表达式?
long lastPollTime;
if (object != null) {
lastPollTime = object.getTime();
} else {
lastPollTime = 0;
}
即如果某个对象不为空,我需要调用对象方法并返回其结果,否则返回 0 Optional.ofNullable().orElse()
不合适,因为它返回相同类型的对象,但我需要方法调用的结果或一些默认值。
原文由 mv200580 发布,翻译遵循 CC BY-SA 4.0 许可协议
几种形式:
其中,最后一个不使用 Optional(因此没有严格回答您的问题!)更易于阅读并且运行时开销更少,因此应该是首选。
可以说,如果您反转选项,它会更简单:
…虽然您可能更喜欢将默认设置放在最后 - 这是个人品味的问题。
如果你真的不能使用三元运算符,而且你经常这样做,你可以编写自己的实用方法:
…可调用为:
…或使用以下方法完全嘲笑您的非三元检查:
完全避免空引用更好,这样就不需要这种检查——例如使用 空对象模式。
…或通过编写返回
Optional
而不是潜在的空值的方法。Optional
是一个很棒的类;用它。只是不要将某些东西转换为Optional
纯粹这样你就可以立即检查它是否为空。