我在输入流中有一个类的完整源代码。是否可以使用 Javassist 为此类创建新的 CtClass
对象?.
我知道使用类的名称可以创建一个新的 CtClass
对象,其内容如下:
ClassPool.getDefault().makeClass("name_of_the_new_class");
但就我而言,我事先不知道类的名称,只知道其完整的源代码(当然我可以通过解析源代码获得类的名称,但请不要告诉我这是解决方案的一部分:-) )
最佳答案
如果您想即时编译源文件,请查看工具 API 以及 ToolProvider.getSystemJavaCompiler() 。从那里,您可以从源代码编译 .class 文件,并根据需要使用类加载器加载它们。
然后,您还可以使用 Javassist 从创建的类文件的字节中创建一个 CtClass,使用 ByteArrayClassPath使用新的 ClassPool。
关于java - 如何使用 Javassist 从源代码加载类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985290/