java - 如何利用可选的 lambda 表达式

标签 java lambda refactoring guava option-type

我正在尝试找到一种干净且代码高效的方法来在可选的 Guava 中应用转换方法来创建对象,我正在使用 Java 8 和 Guava。

在代码的一个地方,我有一个可选的 created 。 Optional<Object> optional = Optional.of(objFromDatabase)

在另一个领域,我试图用这个可选对象创建一个新对象。我能想到的最好的事情是

    if (optional.isPresent()) {
        Object obj = optional.get();
        NewObject newObj = obj.createNewObj(); //throws IOException, newobj to be returned
    } else { throw new IOException() }

但这很麻烦,我希望能学到更多关于可选值和 lambda 表达式的知识。

有什么好的想法吗?

最佳答案

没有人真正给出代码答案,所以这是一个。

首先,创建一个映射对象并处理已检查异常的方法(通过将其包装在未检查异常中)。

private NewObject uncheckedCreateNewObject(Object o) {
  try {
    return o.createNewObject();
  } catch (IOException e) {
    throw new UncheckedIOException(e);
  }
}

然后,做一个法线贴图:

NewObject newObject = Optional.of(objFromDatabase).toJavaUtil()
  .map(this::uncheckedCreateNewObject)
  .orElseThrow(IOException::new);

关于java - 如何利用可选的 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49233142/

相关文章:

java - 以 'yyyy-MM-dd' 格式计算当前年份在 Java 中设置了不正确的值

java - 使用 UrlEncode 在 Apachi Http Client 表单中正确编码百分号 (%)

java - Java lambda 中括号和箭头 (->) 之间的变量是什么?

c++ - C++11 lambda 表达式末尾的括号

javascript - JQuery - 显示/隐藏一组字段

visual-studio-2010 - 没有ReSharper的Visual Studio中的“Extract Variable”

java - 重构类型代码覆盖

java - 快速单击按钮后无法关闭 DialogFragment (Android)

java - 使用 testcontainer 模拟数据库的网络中断

python - 通过 lambda 回调在 Scrapy 蜘蛛内部传递参数