支持泛型的 Java 动态代码生成
有没有提供Java动态代码生成并且还支持泛型的工具?
例如,Javassist 就是我需要的工具,但它不支持泛型。
我编写了一个使用 Java 6 编译器 API 的小库,但据我所知它依赖于 JDK。有没有办法指定另一个编译器?或者只随我的应用程序提供需要使用 Java 编译器 API 调用的部分?
Is there any tool which provides Java dynamic code generation and that also supports generics?
Javassist for example, is the kind of tool that I need, but it does not support generics.
I wrote a small lib which uses the Java 6 Compiler API, however as far as I know it depends on JDK. Is there a way to specify another compiler? Or to ship with my application only the parts that I need to invoke with the Java Compiler API?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
看来您可以使用 Javaassist 操作和读取通用信息。请参阅
http://www.mail-archive.com/ [电子邮件受保护]/msg101222.html
It seems you can manipulate and read generic info with Javaassist. See
http://www.mail-archive.com/[email protected]/msg101222.html
如果您习惯于编写字节码,那么 ASM 对于此类事情来说是一个非常好的库。这将使您可以动态生成类文件,而不必担心类文件格式的细节。然后,您可以使用类加载器将其动态加载到您的应用程序中。
If you are comfortable with writing bytecode then ASM is quite a good library for that kind of thing. That will let you generate a class file on the fly without having to worry about the nitty-gritty of the classfile format. You can then use a classloader to dynamically load it into your application.
如果我没记错的话,类路径中包含tools.jar 就足够了,以便在运行时使用Java 编译器。
If I recall correctly, it is sufficient to have tools.jar in the classpath in order to use the Java compiler at runtime.
实际上,javaassist 可以使用 SignatureAttribute 来处理泛型。
这个项目有很多非常好的例子。希望他们有帮助。
Actually, javaassist can handle generics using
SignatureAttribute
.This project has a lot of very good examples. Hop they are helpful.