LambdaMetafactory

background knowledge

  1. CallSite, a holder of MethodHandler, which is called its target.
  2. Field Descriptors: https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html#jvms-4.3.2

LambdaMetafactory

  1. Invoke Dynamic: https://jcp.org/en/jsr/detail?id=292
  2. lambda表达式反编译后对应的是opcode invokeDynamic
  3. invokeDynamic会创建一个CallSite来cache实际调用的方法。
  4. 生成lambda对应字节码的时刻:Compile Time or Runtime
  5. 例子:Record & String Concatenation

Helpful Command

javap -c -p -v Main

posted @ 2022-12-30 20:13  rxh1999  阅读(273)  评论(0)    收藏  举报