我正在尝试找出如何从 lambda 表达式返回方法值:
public int findMissingNumber(Collection<Integer> ints) {
Single<Integer> start = new Single<>(1);
ints.stream().mapToInt(Integer::valueOf).parallel().forEach(i -> {
if (i != start.setValue(start.getValue() + 1)) {
//return here
}
});
return -1;
}
不过,在lambda表达式中使用return
关键字似乎会显式返回到lambda函数本身。是否有某种方法可以中断或强制返回整个方法?
最佳答案
Is there some type of way to break or force a return for the entire method?
没有。至少,除非您抛出异常,否则不会。
基本上,这不是 forEach
的目的。您可以编写一个接受函数的方法,该函数将返回 null
表示“继续”,返回非 null 表示“停止,并将其作为结果”...但是该方法 isn' t forEach
.
您使用 lambda 表达式的事实在这里真的很偶然。想象一下,您只是调用 forEach
并传入一些参数 - 如果该调用使您的 findMissingNumber
方法返回(没有一个异常(exception)),而 findMissingNumber
方法本身没有返回语句?
关于java - 从 lambda 表达式中的方法返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24704791/