4

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));

したがって、ツリー内の値のいずれかが変更されると、propertyget は正しい値で更新されます。

Bean.&methodをに置き換えることができ、{bean -> bean.method}正常に動作します。Java では、Bean::methodは実際には のエイリアス型のものですbean -> bean.method

4

1 に答える 1

2

以下を使用できます。

MethodClosure f = { it.method }
String s = f()
于 2016-01-15T17:17:40.673 に答える