【发布时间】:2018-01-03 14:56:51
【问题描述】:
我必须调用具有以下签名的过程:
private Optional<Address> getAddress()
我用它来填写我系统上的客户记录。因此,我编写了以下代码来设置记录的地址(如果存在)。
Optional<Address> address = getAddress();
if (address.isPresent())
record.setAddress(address.get());
但是,我收到以下通知:
可以用ifPresent代替
报告条件,例如 if
Optional.isPresent(),可以重写为函数式。
所以我觉得 很好,我将使用这个很酷的 ifPresent 东西来简化我的代码。然后我想出了这一行:
getAddress().ifPresent(x -> record.setAddress(x));
觉得不错,三行合一。但后来我收到了来自 SonarLint
的以下消息用方法引用替换这个 lambda
我想为什么我需要创建一个方法来设置单个变量?
无论如何,由于我对Optional 的使用有点陌生,我可能在这里误解了一些东西......那么,根据建议和最佳实践,我应该如何制作这段简单的代码?
【问题讨论】:
标签: java lambda optional sonarlint