相关疑难解决方法(0)

如何在Java 8中间接运行方法引用?

一般问题是:

  • 使用语法时object::aMethod,是否可以将其转换为类型,如MethodHandle功能接口?
  • 如果不是,如果可能的话,如何在Java 8中间接调用方法引用?

举个例子,假设我们想要一个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)

在上面的代码片段中,一个选项WHATTYPEjava.util.function.Function非常严格的.正如这个答案提到的那样,在版本b75之前,有一个java.util.function.Block可用的并且可能很方便.

另一方面,任何WHATTYPE可能以某种方式转换为java.lang.invoke.MethodHandle?的机会?

Java专家注意:请根据需要优化问题的标题.

java lambda java-8

10
推荐指数
2
解决办法
2171
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1