多个实例的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库.它允许您使用Function引用选择JavaFX属性.您可能拥有类和属性的层次结构,要选择它们,您可能会:

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

因此,当树中的任何值发生更改时,属性get将使用正确的值进行更新.

我可以用{bean – >替换Bean.&方法. bean.method}并且工作正常.在Java中,Bean ::方法实际上是bean的别名类型 – > bean.method.

最佳答案 您可以使用:

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