2011-11-02 59 views
0

我在输入流中有一个类的完整源代码。是否可以使用Javassist为这个类创建一个新的CtClass对象?如何使用Javassist从其源代码加载类?

我知道,与类的名称,可以创建一个新的CtClass对象的东西,如:

ClassPool.getDefault().makeClass("name_of_the_new_class"); 

但在我来说,我事先不知道类的名字,只是它的完整源代码(当然,我可以得到解析源代码的类的名称,但请不要告诉我这是解决方案的一部分:-))

回答

2

如果您想编译源文件看看工具API以及ToolProvider.getSystemJavaCompiler()。从那里你可以从源代码编译.class文件并在需要时使用类加载器加载它们。

然后,您也可以使用Javassist通过使用ByteArrayClassPath创建的类文件的字节创建CtClass并使用新的ClassPool。