来自 lambda 的非本地 return?
Nonlocal return from lambda?
我是编程新手,所以请温柔点! :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。有人可以指出我缺少的东西吗?谢谢!
问题是当你这样做时:
testString.ifPresent(s -> {
//do stuff...
System.out.println("Exit method");
return;
});
您 return 来自 lambda 函数,而不是您期望的来自 test()。
尝试使用 isPresent:
if (testString.isPresent()) {
System.out.println("Exit method");
return;
}
//Log if it was not present
System.out.println("Not present");
与Java9可选将有方法
void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
它也处理其他部分。现在你应该坚持已经接受的答案。
我是编程新手,所以请温柔点! :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。有人可以指出我缺少的东西吗?谢谢!
问题是当你这样做时:
testString.ifPresent(s -> {
//do stuff...
System.out.println("Exit method");
return;
});
您 return 来自 lambda 函数,而不是您期望的来自 test()。
尝试使用 isPresent:
if (testString.isPresent()) {
System.out.println("Exit method");
return;
}
//Log if it was not present
System.out.println("Not present");
与Java9可选将有方法
void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
它也处理其他部分。现在你应该坚持已经接受的答案。