0

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

我知道使用类的名称可以创建一个新CtClass对象,例如:

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

但在我的情况下,我事先不知道类的名称,而只是知道它的完整源代码(当然我可以通过解析源代码得到类的名称,但请不要告诉我这是解决方案 :-) )

4

1 回答 1

2

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

然后,您还可以使用 Javassist 从创建的类文件的字节中创建一个 CtClass,使用ByteArrayClassPath和一个新的 ClassPool。

于 2011-11-03T01:04:48.100 回答