2010-05-31 47 views
10

我有下面的類動態添加註釋到現有類

public class Person { 
    ... 
} 

我想創建另一個類,是這樣的。

@SomeAnnotation 
public class Person { 
    ... 
} 

通過像這樣的簡單方法。

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

有沒有一種簡單的方法來通過ASM做到這一點,例如?我需要什麼樣的依賴關係。我試圖谷歌這個,但我發現的例子不完整或正在做其他事情。其他的框架,比如javassist,會一樣好。

回答

6

您可以使用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(); 

希望它能幫助。 Alexey