Java 8通用LambdaMetafactory?

时间:2015-01-28 16:02:19

标签: java generics lambda java-8

Java 8 access private member with lambda?concrete format转换为generic format时,我找到了another limitation

  

要发出完整的符号类型描述符,编译器也必须   确定返回类型。这是基于该方法的强制转换   调用表达式,如果有,或者如果是,则为Object   如果调用是a,则调用是表达式,否则为void   言。

我很好奇是否有办法overcome this

更新Working ExampleHolger

1 个答案:

答案 0 :(得分:4)

如果编译时调用签名与传递给invoke的{​​{1}}参数不匹配,则可以使用invokeExact而不是invokedType。它将执行所需的转换。

对lambda实例方法的实际调用没有性能损失。在返回LambdaMetafactory封装LambdaMetafactory之前,CallSite决定生成的lambda如何工作。因此,调用它来构造lambda实例的方式不会影响结果。