2010-05-31 12 views
10

लिए टिप्पणी जोड़ने मैं निम्नलिखित वर्गगतिशील रूप से एक मौजूदा वर्ग

public class Person { 
    ... 
} 

है मैं एक वर्ग है कि इस प्रकार दिखाई देगा बनाना चाहेंगे।

@SomeAnnotation 
public class Person { 
    ... 
} 

इस तरह की एक साधारण विधि के माध्यम से।

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

उदाहरण के लिए एएसएम के माध्यम से ऐसा करने का कोई आसान तरीका है? मुझे किस निर्भरता की आवश्यकता होगी। मैंने Google को यह करने की कोशिश की है, हालांकि मुझे जो उदाहरण मिले हैं वे अपूर्ण हैं या कुछ और कर रहे हैं। जावस्सिस्ट जैसे अन्य ढांचे उतने ही अच्छे होंगे।

उत्तर

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(); 

आशा है कि यह मदद करता है। एलेक्सी

संबंधित मुद्दे