我们有一个 Java 代码库,打算跨项目使用。其中一些项目需要将注释添加到该库中的 Java 对象(即,在一个项目中,这些对象将用于 JAX-RS servlet 实现,因此需要使用 JAXB、JSON 等注释对其进行注释)。我遇到的问题是我不知道如何在不更改原始库的情况下添加这些注释。
考虑这个例子:
public class MyClass
{
private String field1;
private int field2;
}
在一些项目中,我希望这个类表现得好像是
public class MyClass
{
@Annotation1
private String field1;
@Annotation2
private int field2;
}
最初我想过使用单独注释的接口(interface)或派生类但无法弄清楚如何去做(或者是否可能)。我还发现了 Javassist 建议 in this thread (即 Java 字节码操作方法)但问题是这也需要在 Android 客户端上工作,所以它不是我的选择。在这一点上我没有想法。
如果有人能以任何方式提供帮助,我将不胜感激。也许我遗漏了什么,或者我想做的不是正确的方法。无论如何,我现在需要一些指导才能继续。
非常感谢。
最佳答案
我对此进行了更多研究,作为总结,这是我的发现:
- Java 语言不允许在运行时更改注释。
- 可以使用Javassist修改 java 字节码,但它不适用于 Android 等平台。
- 可以使用ASM但这涉及处理 Java 程序集(此处有一个示例:http://community.jboss.org/thread/150002)。
主要是由于 Android 上不存在 JAXB(以及其他原因),我们切换到 JSON 并开始使用 Jackson 作为实现。此更改的一个好处是能够使用 Jackson 所说的“混合注释”,这正是我一直在寻找的。p>
这是对其进行更多解释的链接:http://www.cowtowncoder.com/blog/archives/2009/08/entry_305.html
关于java - 在java项目中添加/修改注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299845/