java - 如何在我想要返回的方法中从 lambda 返回值?

标签 java lambda return

如何在我想要返回的方法中从 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/

相关文章:

lambda - 应该是lambda表达式-LISP

c++ - 使用 +(一元加)解决 lambda 的函数指针和 std::function 上的不明确重载

javascript - SetTimeout 后获取返回值

c - 函数只返回 1?

java - 当精细头记录时将文件分割成 block (java 8)

javascript - 在 Javascript 函数中返回 For 循环值

java - Android无法获取Texview内容分享 Intent

java - 无法使用子/模块解析 MAVEN 项目中的类依赖关系(在 Eclipse 和 mnv CLI 中看到)

java - 如何获得表中两列的乘积?

java - 建立连接时的 HttpsURLConnection 状态码 302