gpt4 book ai didi

java - 用 java 8 可选替换空检查

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:47 26 4
gpt4 key购买 nike

我正在尝试用可选的代码块替换下面的代码块,只是想检查这样做是否会对性能或其他任何方面产生任何不良影响?

现有代码:

UserObj userObj=new UserObj();
Object result = fetchDetails();
if (null != result) {
userObj.setResult(result.toString());
}

使用 Java 8 可选:

UserObj userObj=new UserObj();
Optional.ofNullable(fetchDetails()).ifPresent(var -> userObj.setResult(var.toString()));

进行此更改只是为了使代码看起来简洁,因为我的代码中有很多空检查 block 。

最佳答案

首先,我认为您误解了Optional 的用途。不只是为了替换

if(obj != null){ ... }

Optional 的要点是为函数返回值提供一种方法,以指示没有返回值。请阅读this post了解更多详情。

Optional 在您的情况下的正确使用是从 fetchDetails 方法返回可选的 ResultObj:

Optional<ResultObj> fetchDetails() {
...
}

然后您只需像以前一样将方法链接到获取的 Optional 上。

更新

如果您无法修改 fetchDetails,仍然可以选择将其包装到您自己的方法中,如下所示:

Optional<ResultObj> fetchOptionalDetails() {
return Optional.ofNullable(fetchDefails());
}

创建一个新方法会增加一点点开销,但代码会更具可读性:

fetchOptionalDetails().ifPresent(details -> /* do something */);

关于java - 用 java 8 可选替换空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54416610/

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