【发布时间】:2014-08-09 05:41:55
【问题描述】:
这是我在 Java 中的回调(future 是 Mongo 的 SingleFutureResult):
future.register(new SingleResultCallback<ArrayList<Document>>() {
@Override
void onResult(ArrayList<Document> documents, MongoException e) {
//do something
}
})
在 Java 8 中,我可以使用 Lambda 使其看起来像这样:
future.register((documents, e) -> {
//do something
});
整洁。但是,我想在 Groovy 类中调用该 Java 方法。我知道 Groovy 目前不支持 jdk8 lambda 的语法,但文档总是强调它们有闭包。如果我尝试在这种情况下使用闭包,它会失败,因为闭包是Closure 类型,而不是SingleResultCallback 类型。有没有办法拥有不同类型的闭包之类的东西?有没有其他方法可以很好地完成这项工作?我知道我可以使用第一个解决方案,但在 groovy 类中这看起来很奇怪。
【问题讨论】: