Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javassist与Java编译器API_Java_Api_Compiler Construction_Javassist_Apache Commons Jci - Fatal编程技术网

Javassist与Java编译器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有几个选项,其中一个是一个包含的小型编译器,允许您

在我目前正在进行的一个项目中,我需要在运行时生成Java类。 在以后使用这些类时,我还需要避免使用反射

我一直在寻找当前的解决方案来实现这一点,并找到了Javassist和Java6Java编译器API

但我很困惑:

  • Javassist使用什么来生成 上课?它使用反射还是反射 什么

  • 我编写了一些测试并找到了它 很容易生成字节码 从源代码,然后加载 从生成的字节码中创建类。 使用的好处是什么 Javassist在这个解决方案之上


  • Javassist有几个选项,其中一个是一个包含的小型编译器,允许您将Java代码段转换为字节码,从而可以轻松地在现有类中插入“System.out.println(…)”或“log.debug(…)”语句


    不久前我写了一篇关于这方面的文章,展示了如何做到这一点。看见注意:对于一个生产设置,不应该使用这种方法——那么你应该考虑在应用程序中使用面向方面的编程。你还认为Javassist更好吗?或者我选择哪一个真的不重要?取决于你到底需要做什么。请随意为您的问题添加一个用例。这只是一个简单的算术表达式评估方法,以避免使用反射或类似访问者模式的东西……您多久创建一次?仅一次。编译生成的类,获取它的单个实例,然后使用这个对象。