【问题标题】:Durian's Errors class rethrow().wrap method invokes compiler errorDurian 的 Errors 类 rethrow().wrap 方法调用编译器错误
【发布时间】:2016-12-15 02:01:23
【问题描述】:

我正在尝试使用 Durian library 的 Errors 类来捕获 Java 8 的 lambda 函数中的检查异常。

我写了简单的函数:

void eat(NsiItemInfoType food) throws CantUpdNSI {}

并试图调用它:

这段代码运行良好:

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(this:: eat) );

但此代码调用编译器错误方法 wrap(Throwing.Function) 对于 Errors.Rethrowing 类型不明确

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t -> eat(t)) );

我不明白为什么。

我从这里得到了例子:https://github.com/diffplug/durian/blob/v2.0/test/com/diffplug/common/base/ErrorsExample.java

榴莲版本:com.diffplug.durian 3.4.0

【问题讨论】:

  • 我无法重现 JRE1.8 的问题。您使用的是哪个 JRE 版本?
  • 正是 jdk1.8.0_60
  • 用 jdk1.8.0_60 试过没有问题。您使用哪个 IDE(以及哪个版本)?
  • Spring Tool Suite 版本:3.7.3.RELEASE 构建 ID:201602250958 平台:Eclipse Luna SR2 (4.4.2)
  • 尝试将您的 Eclipse 更新到最新版本。

标签: java lambda checked-exceptions


【解决方案1】:

接下来我必须在eat() 上放置括号

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t ->{ eat(t); }) );

【讨论】:

    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多