Java 从内部lambda表达式退出方法
我有一个包含lambda表达式的方法,我想通过在lambda体中调用return从该方法返回,但它不起作用。lambda体中的返回不影响外部方法Java 从内部lambda表达式退出方法,java,java-8,Java,Java 8,我有一个包含lambda表达式的方法,我想通过在lambda体中调用return从该方法返回,但它不起作用。lambda体中的返回不影响外部方法 void X(){ lmbda -> { if (i > j) return; } some code .... } lambda表达式独立于调用它的代码。这也是为什么它所使用的一切都必须是最终的(或者至少是有效的最终) 您可以通过lambda设置一个字段来实现这样的功能,例如布尔值嵌入到外部方法中
void X(){
lmbda -> {
if (i > j) return;
}
some code ....
}
lambda表达式独立于调用它的代码。这也是为什么它所使用的一切都必须是最终的(或者至少是有效的最终)
您可以通过lambda设置一个字段来实现这样的功能,例如布尔值
嵌入到外部方法中已知的最终容器类中。然后,外部方法可以检测布尔值
更改和返回
。但是lambda本身不能强制方法返回
然而,您可能应该重新考虑您的设计,您可能不需要lambda
我提到的例子是:
public class Flag {
public boolean flag = false;
}
public class YourClass() {
private final static Flag FLAG = new Flag();
void X() {
FLAG.flag = false;
lmbda -> {
if (i > j) {
FLAG.flag = true;
}
}
if (FLAG.flag) {
FLAG.flag = false;
return;
}
some code ...
}
}
可能,但绝对不是你所说的好设计。为什么这里需要一个lambda?这是不可能的。您试图解决的更广泛的问题是什么?原始代码比这个示例更大。我在很多情况下都需要它。当iam在lambda body中时,如果条件结果为真,我希望退出外部方法