Javassist与Java编译器API
在我目前正在进行的一个项目中,我需要在运行时生成Java类。 在以后使用这些类时,我还需要避免使用反射 我一直在寻找当前的解决方案来实现这一点,并找到了Javassist和Java6Java编译器API 但我很困惑:Javassist与Java编译器API,java,api,compiler-construction,javassist,apache-commons-jci,Java,Api,Compiler Construction,Javassist,Apache Commons Jci,在我目前正在进行的一个项目中,我需要在运行时生成Java类。 在以后使用这些类时,我还需要避免使用反射 我一直在寻找当前的解决方案来实现这一点,并找到了Javassist和Java6Java编译器API 但我很困惑: Javassist使用什么来生成 上课?它使用反射还是反射 什么 我编写了一些测试并找到了它 很容易生成字节码 从源代码,然后加载 从生成的字节码中创建类。 使用的好处是什么 Javassist在这个解决方案之上 Javassist有几个选项,其中一个是一个包含的小型编译器,允许您
Javassist有几个选项,其中一个是一个包含的小型编译器,允许您将Java代码段转换为字节码,从而可以轻松地在现有类中插入“System.out.println(…)”或“log.debug(…)”语句
不久前我写了一篇关于这方面的文章,展示了如何做到这一点。看见注意:对于一个生产设置,不应该使用这种方法——那么你应该考虑在应用程序中使用面向方面的编程。你还认为Javassist更好吗?或者我选择哪一个真的不重要?取决于你到底需要做什么。请随意为您的问题添加一个用例。这只是一个简单的算术表达式评估方法,以避免使用反射或类似访问者模式的东西……您多久创建一次?仅一次。编译生成的类,获取它的单个实例,然后使用这个对象。