gpt4 book ai didi

Java 9 ifPresentOrElse 返回值

转载 作者:行者123 更新时间:2023-12-01 13:58:04 29 4
gpt4 key购买 nike

1/工作代码:

public Student process (int id, name){
Optional<Student> studentOpt = myrepo.findById(id);
studentOpt.isPresent() {
return updateStudent(id, name);
} else {
return createStudent(id, name);
}

2/我尝试将其更改为“完整的 lambdas 代码”(不起作用):
public Student process (int id, name){
Optional<Student> studentOpt = myrepo.findById(id);
return studentOpt.ifPresentOrElse(student-> return updateStudent(id, name), () -> return createStudent(id, name));
}

1/我应该将其更改为完整的 lambda 吗?什么是最干净的?

2/如果是,如何?

最佳答案

鉴于您的方法 updateStudentcreateStudent涉及某种形式的副作用,您通常应该更喜欢无副作用的 lambda,我不建议您在此处使用它们。事实上,一个简单的 if-then-else 块就足够了。但是,如果您很好奇,等效的 lambda 将如下所示:

return studentOpt
.map(unused -> updateStudent(id, name))
.orElseGet(() -> createStudent(id, name));

关于Java 9 ifPresentOrElse 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53039013/

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