【发布时间】:2014-03-21 22:09:38
【问题描述】:
我正在尝试生成字节码,它将在没有代码初始化逻辑的情况下创建对象实例。其实我想重现generateSerializationConstructor的行为。
{
mv = cw.visitMethod(ACC_PUBLIC, "newObjectInstance", "()Ljava/lang/Object;", null, null);
mv.visitCode();
mv.visitTypeInsn(NEW, classNameInternal);
mv.visitInsn(DUP);
classNameInternal = "java/lang/Object";
mv.visitMethodInsn(INVOKESPECIAL, classNameInternal, "<init>", "()V");
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
不幸的是我得到了这样的错误:
java.lang.VerifyError: (class: com/esotericsoftware/reflectasm/benchmark/ConstructorAccessBenchmark$SomeClass__ClassAccess__, method: newObjectInstance signature: ()Ljava/lang/Object;) 调用错误的初始化方法
【问题讨论】:
标签: java bytecode java-bytecode-asm