gpt4 book ai didi

java - 可选 isPresent 与 orElse(null)

转载 作者:太空狗 更新时间:2023-10-29 22:43:54 26 4
gpt4 key购买 nike

我在我的项目中将依赖项更新为 Spring 5,并被编译错误轰炸,其中 findOne() 的方法定义已被 findById() 替换,这现在返回一个 Optional(如果我错了请纠正我)。

在重构过程中,我遇到了多种可以选择采用的方法,因此我希望获得一些意见,以决定首选哪种方法。

第一种方法:

ExpectedPackage ep = expectedPackageRepository.findById(1).orElse(null);
if(ep != null){
ep.setDateModified(new Date());
expectedPackageRepository.saveAndFlush(ep);
}

第二种方法:

Optional<ExpectedPackage> ep = expectedPackageRepository.findById(1);
if(ep.isPresent()){
ep.get().setDateModified(new Date());
expectedPackageRepository.saveAndFlush(ep.get());
}

或者我错过了第三种更好的方法?我浏览了几个问题和几篇文章,但没有找到明确的答案。

最佳答案

您还可以:

expectedPackageRepository.findById(1).ifPresent(
ep -> {
ep.setDateModified(new Date());
expectedPackageRepository.saveAndFlush(ep);
}
);

理想情况下,您还将方括号 ({}) 之间的部分提取到单独的方法中。然后,你可以这样写:

    expectedPackageRepository.findById(1).ifPresent(this::doSomethingWithEp);

地点:

void doSomethingWithEp(ExpectedPackage ep) {
ep.setDateModified(new Date());
expectedPackageRepository.saveAndFlush(ep);
}

您可以在此处阅读ifPresent 的文档:https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#ifPresent-java.util.function.Consumer-

如其所述,如果该值存在,它将执行指定的操作,否则不执行任何操作。

关于java - 可选 isPresent 与 orElse(null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52047479/

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