![]() |
1
11
是的,理论上可以这样做,您的类文件是字节代码,在字节数组的末尾!然后,可以使用方法defineclass(string,byte[],int,int)获取一个类实例,该实例可用于通过反射实例化对象。 在实践中,你可以使用 CGLib 或 javaassist . 您还可以使用在文件中生成Java代码的漫长方式,调用编译器,然后加载文件。 |
![]() |
3
1
您可以通过将新类的代码写入文件,然后调用该文件上的Java编译器,并使用类加载器将该类动态加载到运行的应用程序中来实现这一点。ApacheTomcat为其JSP页面执行此操作;它获取代码,对其进行一些更改,将其包装在类中间的一个try/catch块中,然后将该块写入文件系统,编译它,并使用类加载器获取和控告它来服务请求。 |
![]() |
4
1
当然可以。例如,请参见 article . |
![]() |
5
1
也许 最简单的 解决方案(不需要额外的库)是使用 Java compiler API 这是用Java 6来实现的。您只需生成.java,编译,然后执行一个类。 |
![]() |
6
0
也许有点过分了,
Apache BCEL
(字节代码工程库)可用于创建
虽然我自己没有尝试过,但可以想象,可以创建一个类,加载它,并在运行时实例化它。 |
![]() |
7
0
|
![]() |
9
0
如果需要Java和元编程,请使用 Groovy . |
![]() |
10
0
|
![]() |
11
0
最近有一个关于 in-memory compilation 在您成功地生成源代码之后,它应该给您一些关于应该做什么的提示。 |