我有方法包含lambda表达式我希望通过在lambda体中调用return从方法返回但它不起作用。 lambda体中的返回不影响外部方法
void X(){
lmbda -> {
if (i > j) return;
}
some code ....
}
答案 0 :(得分:2)
lambda 表达式是调用它的代码的独立。这也是为什么它所使用的一切必须最终(或者至少是有效的最终)。
您可以使用lambda设置字段来实现此类功能,例如嵌入在外部方法中已知的最终容器类中的boolean
。然后,外部方法可以检测到boolean
更改和return
。但 lambda 本身不能强迫方法return
。
然而,您可能需要重新考虑您的设计,您可能不需要那里的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 ...
}
}
可能,但绝对不是你所谓的漂亮的设计。