Java 从内部lambda表达式退出方法

Java 从内部lambda表达式退出方法,java,java-8,Java,Java 8,我有一个包含lambda表达式的方法,我想通过在lambda体中调用return从该方法返回,但它不起作用。lambda体中的返回不影响外部方法 void X(){ lmbda -> { if (i > j) return; } some code .... } lambda表达式独立于调用它的代码。这也是为什么它所使用的一切都必须是最终的(或者至少是有效的最终) 您可以通过lambda设置一个字段来实现这样的功能,例如布尔值嵌入到外部方法中

我有一个包含lambda表达式的方法,我想通过在lambda体中调用return从该方法返回,但它不起作用。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中时,如果条件结果为真,我希望退出外部方法