动态地向现有类添加注释

时间:2010-05-31 16:48:23

标签: java

我有以下课程

public class Person {
   ...
}

我想创建另一个看起来像这样的类。

@SomeAnnotation
public class Person {
   ...
}

通过这样的简单方法。

public static Class addAnnotation(Class originalType, Class<? extends Annotation> annotation) {
   // what goes here?
}

例如,通过ASM有一种简单的方法吗?我需要什么依赖项。我试过谷歌这个,但我发现的例子要么不完整,要么正在做其他事情。其他框架如javassist也同样好。

1 个答案:

答案 0 :(得分:7)

您可以使用javassist项目。

使用javassist,它看起来像这样:

ClassFile cf = ... ;
ConstPool cp = cf.getConstPool();
AnnotationsAttribute attr = new AnnotationsAttribute(cp, AnnotationsAttribute.visibleTag);

Annotation a = new Annotation("Author", cp);
a.addMemberValue("name", new StringMemberValue("Chiba", cp));
attr.setAnnotation(a);
cf.addAttribute(attr);
cf.setVersionToJava5();

希望它有所帮助。 阿列克谢