输出执行结果;
从mian方法中我们的重点就在于invokedynamic这个指令,重点要了解下是如何通过invokedynamic指令生成目标对象,invokedynamic指令通过找到BootstrapMethods中的方法,生成动态调用点,也是调用LambdaMetafactory的metafactory方法。
public static CallSite metafactory(MethodHandles.Lookup caller,
String invokedName,
MethodType invokedType,
MethodType samMethodType,
MethodHandle implMethod,
MethodType instantiatedMethodType)
throws LambdaConversionException {
AbstractValidatingLambdaMetafactory mf;
mf = new InnerClassLambdaMetafactory(caller, invokedType,
invokedName, samMethodType,
implMethod, instantiatedMethodType,
false, EMPTY_CLASS_ARRAY,
EMPTY_MT_ARRAY);
mf.validateMetafactoryArgs();
return mf.buildCallSite();
}