通过源码可以看出,metafactory方法通过InnerClassLambdaMetafactory类生成对象,并提供后续调用,在InnerClassLambdaMetafactory源码中可以看到,有提供开关是否dump生成的class文件。
接下来我们通过设置启动参数-Djdk.internal.lambda.dumpProxyClasses查看中间对象,增加这个参数以后会生成LambdaTest$$Lambda$1类, final class LambdaTest$$Lambda$1 implements Func {
private LambdaTest$$Lambda$1() {
}
@Hidden
public int add(int var1, int var2) {
return LambdaTest.lambda$main$0(var1, var2);
}
}