在我目前正在进行的一个项目中,我需要在运行时生成 Java 类。以后使用这些类时,我还需要避免使用反射。
我一直在寻找当前的解决方案来执行此操作,并找到了 Javassist 和 Java 6 Java Compiler API。
虽然我很困惑:
Javassist 使用什么来生成类?它使用反射还是什么?
我编写了一些测试代码,发现从源代码生成字节码非常容易,然后从生成的字节码加载类。与此解决方案相比,使用 Javassist 有哪些优势?
在我目前正在进行的一个项目中,我需要在运行时生成 Java 类。以后使用这些类时,我还需要避免使用反射。
我一直在寻找当前的解决方案来执行此操作,并找到了 Javassist 和 Java 6 Java Compiler API。
虽然我很困惑:
Javassist 使用什么来生成类?它使用反射还是什么?
我编写了一些测试代码,发现从源代码生成字节码非常容易,然后从生成的字节码加载类。与此解决方案相比,使用 Javassist 有哪些优势?
Javassist 有几个选项,一个是一个小的包含编译器,允许您将 Java 片段转换为字节码,使其易于插入,例如“System.out.println(....)”或“log.debug(... )" 现有类中的语句。
不久前我写了一篇关于这个的文章,它展示了它是如何完成的。请参阅http://blogs.oracle.com/CoreJavaTechTips/entry/add_logging_at_class_load。注意:对于生产设置,不应该使用这种方法——那么你应该考虑在你的应用程序中使用面向方面的编程。