多个实例的 groovy 方法引用



我正在从Java迁移到Groovy,并且在方法引用方面遇到了问题。

在Java中,我可以这样做:

Function<Bean, String> f = Bean::method;
String s = f.apply(new Bean());

我想在 Groovy 中实现相同的功能。我尝试做:

Function f = Bean.&method
Sting s = f.apply new Bean()

但我有一个例外,在f.apply行:

groovy.lang.MissingMethodException: No signature of method: Bean.method() is applicable for argument types: (Bean) values: [Bean@17483c58]

我知道我可以执行以下操作来获取实例方法的方法引用,但我想为任何实例获取通用方法。

MethodClosure f = bean.&method
String s = f()

我想使用它来使用 EasyBind 库。它允许您选择具有函数引用的 JavaFX 属性。您可能具有类和属性的层次结构,若要选择它们,可以执行以下操作:

property.bind(EasyBind.select(root).select(Root::branch).selectObject(Branch::leaf));

因此,当树中的任何值发生更改时,property会使用正确的值进行更新。

我能够用{bean -> bean.method}替换Bean.&method,并且工作正常。在Java中,Bean::method实际上是bean -> bean.method的别名类型的东西。

您可以使用:

MethodClosure f = { it.method }
String s = f()

最新更新