I have the following class
public class Person {
...
}
I would like to create another class that would look like this.
@SomeAnnotation
public class Person {
...
}
Via a simple method like so.
public static Class addAnnotation(Class originalType, Class<? extends Annotation> annotation) {
// what goes here?
}
Is there an easy way to do this via ASM for example? What dependencies would I need. I have tried to Google this however the examples I have found are either incomplete or are doing something else. Other frameworks such as javassist would be just as good.
You can use javassist project for that.
With javassist it will be look something like that:
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();
Hope it helps. Alexey
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With