作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在我想要返回的方法中从 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/
我是一名优秀的程序员,十分优秀!