一般问题是:
object::aMethod,是否可以将其转换为类型,如MethodHandle功能接口?举个例子,假设我们想要一个MethodRefRunner:
class MethodRefRunner {
static void execute(Object target, WHATTYPE mref, Object... args) {
mref.apply(args);
}
}
Run Code Online (Sandbox Code Playgroud)
它可以用作: MethodRefRunner.execute(o, o::someMethod, someParam)
在上面的代码片段中,一个选项WHATTYPE是java.util.function.Function非常严格的.正如这个答案提到的那样,在版本b75之前,有一个java.util.function.Block可用的并且可能很方便.
另一方面,任何WHATTYPE可能以某种方式转换为java.lang.invoke.MethodHandle?的机会?
Java专家注意:请根据需要优化问题的标题.