Slide 56
Slide 56 text
InnerClassLambdaMetafactory
ASM(Java バイトコード操作フレームワーク)を使い、
直接バイトコードを組み立ててクラスを作っている
MethodVisitor ctor =
cw.visitMethod(ACC_PRIVATE, NAME_CTOR,
constructorType.toMethodDescriptorString(),
null, null); // メソッド定義
ctor.visitCode(); // コードブロック開始
ctor.visitVarInsn(ALOAD, 0); // 値のロード
ctor.visitMethodInsn(
INVOKESPECIAL, JAVA_LANG_OBJECT, NAME_CTOR,
METHOD_DESCRIPTOR_VOID, false); // メソッド呼び出し