我正在使用ByteBuddy在运行时使用动态生成的字节码创建一个类。生成的类完成了预期的工作,但是我想手动检查生成的字节码,以确保它是正确的。
例如
Class<?> dynamicType = new ByteBuddy()
.subclass(MyAbstractClass.class)
.method(named("mymethod"))
.intercept(new MyImplementation(args))
.make()
.load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
MyImplementation将多个StackManipulation命令链接在一起,以创建动态生成的代码。
是否可以将生成的类写出到文件中(以便可以使用IDE进行手动检查),或者以其他方式打印生成的类的字节码?
最佳答案
您可以将类另存为.class文件:
new ByteBuddy()
.subclass(Object.class)
.name("Foo")
.make()
.saveIn(new File("c:/temp"));
此代码创建
c:/temp/Foo.class
。