我是编程新手所以请温柔! :d
public void test(Optional<String> testString){
testString.ifPresent(s -> {
//do stuff...
System.out.println("Exit method");
return;
});
//Log if it was not present
Logger.log("...");
}
这里有一段代码片段。如果存在可选项,我会做一些事情并想通过调用return来退出方法。我现在想知道为什么我的记录器会记录某些内容,尽管testString存在。有人可以指出我错过了什么吗?谢谢!
答案 0 :(得分:2)
问题是当你这样做时:
testString.ifPresent(s -> {
//do stuff...
System.out.println("Exit method");
return;
});
你从lambda函数返回,而不是像你期望的那样从test()返回。
尝试使用isPresent:
if (testString.isPresent()) {
System.out.println("Exit method");
return;
}
//Log if it was not present
System.out.println("Not present");
答案 1 :(得分:2)
使用Java 9 Optional将具有方法
void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
处理else部分。现在你应该坚持已经接受的答案。