gpt4 book ai didi

java - optional ifPresent 调用对象方法

转载 作者:行者123 更新时间:2023-12-03 23:13:39 27 4
gpt4 key购买 nike

我必须调用具有以下签名的过程:

private Optional<Address> getAddress()

我用它来填写我系统上的客户记录。所以,我做了以下代码来设置记录的地址(如果存在)。
Optional<Address> address = getAddress();
if (address.isPresent())
record.setAddress(address.get());

但是,我收到以下通知:

Can be replaced by ifPresent

Reports conditions like if Optional.isPresent() which could be rewritten in functional style.



所以我觉得很棒,我要使用这个很酷的 ifPresent东西来简化我的代码。然后我想出了这一行:
getAddress().ifPresent(x -> record.setAddress(x));

并认为不错,3 行合二为一。但后来我收到了来自 的以下消息SonarLint

Replace this lambda with a method reference



我想为什么我需要创建一个方法来设置单个变量?

无论如何,因为我对 Optional 的使用有点陌生。 ,我可能在这里误解了一些东西......那么,根据建议和最佳实践,我应该如何制作这段简单的代码?

最佳答案

您不应该仅仅为了设置单个变量而创建新方法。 SonarLint 只是建议最好使用方法引用而不是 lambda 表达式。

您可以在 Oracle 的网站上阅读 Java 8 中的方法引用:The Java Tutorials - Method References .

对于您的情况 - SonarLint 只是希望您用以下内容替换该行:

Record record = ...;
getAddress().ifPresent(record::setAddress);

关于java - optional ifPresent 调用对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45358236/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com