我正在使用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

09-10 07:38
查看更多