/ / Groovy позоваване на метода за няколко случая - groovy

Groovy позоваване на метода за няколко случая - 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.&method с {bean -> bean.method} и това работи добре. В Java, Bean::method всъщност е нещо като псевдоним bean -> bean.method.

Отговори:

2 за отговор № 1

Можеш да използваш:

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