如何在我想要返回的方法中从 lambda 返回值?
最初,我有这个:
myCollection.forEach(item -> {
try {
doSomething(item);
} catch (Exception e) {
return "There was a problem doing something: " + e.getMessage();
}
});
但我的目的是返回包含所有这些代码的方法,而不是仅返回 lambda。所以,我最终不得不这样做:
String error = "";
myCollection.stream().filter(item -> {
try {
doSomething(item);
return true;
} catch (Exception e) {
error = "There was a problem doing something: " + e.getMessage();
}
return false;
});
if (!error.isEmpty()) {
return error;
}
但这并不是最好的方法。 Java 8 函数式且优雅的方法是什么?
最佳答案
你真的需要在这里使用 Lambda 吗?最好的 Java 方法是在集合上使用 1.5 for-each :
try {
for (final E item : myCollection) {
doSomething(item)
}
} catch (final Exception ex) {
return "blah";
}
请注意,进入和退出 try-catch
block 时会付出性能损失,因此最好将其放在循环之外。
关于java - 如何在我想要返回的方法中从 lambda 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49496615/