有没有提供Java动态代码生成并且还支持泛型的工具?
例如,Javassist 就是我需要的工具,但它不支持泛型。
我编写了一个使用 Java 6 编译器 API 的小库,但据我所知它依赖于 JDK。有没有办法指定另一个编译器?或者只随我的应用程序提供需要使用 Java 编译器 API 调用的部分?
看来你可以使用 Javassist 操纵和读取遗传信息。看
http://www.mail-archive.com/[电子邮件受保护]/msg101222.html http://www.mail-archive.com/jboss-user@lists.jboss.org/msg101222.html
[jboss-user] [Javassist 用户问题] - 回复:使用 Javassist 更改方法的泛型信息
西蒙·林盖特
2007 年 12 月 20 日星期四 12:22:14 -0800
我已经进一步阅读了编译器如何实现这一点
终于找到了我一直在寻找的答案。
您绝对可以使用 javassist 来做到这一点。关键类是 javassist.bytecode.Signature 属性。
从 CtMethod 中,我获得了 methodInfo,我添加了 Signature 属性。你可以用类似的方法来做到这一点:
CtMethod method = ....
MethodInfo methodInfo = method.getMethodInfo();
SignatureAttribute signatureAttribute = new
SignatureAttribute(methodInfo.getConstPool(),
"()Ljava/util/List<Ljava/lang/String;>;");
methodInfo.addAttribute(signatureAttribute);
如果您对阅读内部泛型的签名更感兴趣,可以使用 methodInfo.getAttribute(Signature Attribute.tag)。
我希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)