在java项目中添加/修改注释

alo*_*oko 6 java android annotations runtime

我们有一个Java代码库,我们打算在整个项目中使用它们.其中一些项目需要在此库中的Java对象中添加注释(即在一个项目中,这些对象将在JAX-RS servlet实现中使用,因此需要使用JAXB,JSON等注释进行注释).我遇到的问题是我无法弄清楚如何在不更改原始库的情况下添加这些注释.

考虑这个例子:

public class MyClass
{
    private String field1;
    private int field2;
}
Run Code Online (Sandbox Code Playgroud)

在某些项目中,我希望课程表现得像是一样

public class MyClass
{
    @Annotation1
    private String field1;
    @Annotation2
    private int field2;
}
Run Code Online (Sandbox Code Playgroud)

最初我考虑使用单独注释的接口或派生类,但无法弄清楚如何做(或者是否可能).我也发现了这个线程中的Javassist建议(即Java字节码操作方法),但问题是这需要在Android客户端上工作,所以它不适合我.在这一点上,我没有想法.

如果有人能以任何方式提供帮助,我将不胜感激.也许我错过了一些东西,或者我想要做的不是正确的方法.无论如何,我现在需要一些指导才能继续.

首先十分感谢.

alo*_*oko 4

我对此进行了更多研究,作为总结,我发现以下内容:

  • Java 语言不允许在运行时更改注释。
  • 可以使用Javassist修改 java 字节码,但它不适用于 Android 等平台。
  • 可以使用ASM,但这涉及处理 Java 汇编(示例如下: http: //community.jboss.org/thread/150002)。

主要是由于 Android 上不存在 JAXB(以及其他原因),我们切换到 JSON 并开始使用 Jackson 作为实现。这一更改的好处之一是能够使用 Jackson 所说的“混合注释”,这正是我所寻找的。

这是更多解释它的链接:http://www.cowtowncoder.com/blog/archives/2009/08/entry_305.html