我正在从 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
get 会更新为正确的值。
我可以替换为Bean.&method
并且{bean -> bean.method}
效果很好。在 Java 中, theBean::method
实际上是bean -> bean.method
.