我使用 Eclipse Gluon 插件设置了一个 JavaFX Gluon 项目,并尝试使用 Dagger 获取 Gluon Ignite(Gluon Ignite;基本上是一个能够在 JavaFX 中使用 CDI 的包装框架)。
在 教程中,我找到了以下 Java 8 Lambda 表达式来创建 DaggerContext 对象:
private final DaggerContext context = new DaggerContext(this, () -> Arrays.asList(new DaggerModule()));
这让我有点困惑,因为我对 Lambda 表达式很陌生。虽然,如果它完美地工作,我可能不会问这个问题 - 但它不会;) Eclipse 报告'
构造函数 DaggerContext(GluonApplication, () -> {}) 未定义
那么有人可以一步一步地告诉我那里发生了什么吗?也许保守版本的代码有助于更好地理解它。
我知道像这样的 lambda 表达式被用作创建匿名类对象的简短形式。因此,当查看 DaggerContext 的构造函数时,我看到表达式() -> Arrays.asList(new DaggerModule())
应该创建一个 type 的对象Supplier<Collection<Object>>
,但这显然不起作用。
- - 更新 - -
问题只是一个简单的导入问题。我必须添加import java.util.Arrays;
以解决错误。Sill,如果有人可以对 lambda 表达式提供进一步的解释,那就太好了。