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 では、Bean::method
は実際には のエイリアス型のものですbean -> bean.method
。