Java 9 ifPresentOrElse返回值

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返回值 的全部内容, 来源链接: utcz.com/qa/414250.html

回到顶部