2010-04-07 11 views
7

मैं जावा एनोटेशन का भारी उपयोग करना शुरू करता हूं। एक उदाहरण एनोटेशन के साथ विधि ले रहा है और उन्हें 'टेलनेट' आधारित कमांड लाइन कमांड में परिवर्तित कर रहा है। मैं एनओटीशन पार्सिंग और जोप विकल्प पार्सर में हुक करके ऐसा करता हूं।जावा एनोटेशन - क्या एनोटेशन पढ़ने/संसाधित करने के लिए कोई सहायक लाइब्रेरी है?

हालांकि, मैं इनमें से बहुत से मैन्युअल रूप से करता हूं। उदाहरण के लिए, विधि पैरामीटर एनोटेशन प्रोसेसिंग ..

Method method = ... //; 
Class[] parameters = method.getParamterTypes(); 
Annotation[][] annotations = method.getparamterAnnotations(); 

for(int i = 0; i < parameters.length; i++) 
{ 
    // iterate through the annotation , see if each param has specific annotation ,etc. 
} 

यह बहुत अनावश्यक और थकाऊ है।

क्या कोई ओपनसोर्स प्रोजेक्ट है जो एनोटेशन को संसाधित करने में मदद करता है?

उत्तर

6

हम इसका उपयोग किसी विशिष्ट एनोटेशन देखने के लिए:

for (Field field : clazz.getDeclaredFields()) { 
    if (field.isAnnotationPresent(MyAnnotation.class)) { 
     field.setAccessible(true); 
     String fieldName = field.getName(); 
     Object fieldValue = field.get(myObj); 
     field.setAccessible(false); 
    } 
} 
0

वास्तव में सुनिश्चित नहीं हैं कि मदद से आप एनोटेशन के लिए की जरूरत है, लेकिन मैं सुझाव दे रहा था कि तुम मेरी Annox परियोजना पर एक नज़र डालें। यहां API है।

Annox साथ

आप, उदाहरण के लिए, एनोटेशन

  • XAnnotation
  • XAnnotationField में
  • XPackage पढ़ सकते हैं
  • XClass
  • XConstructor
  • XField
  • XMethod
  • XParameter

संरचनाएं जो आपकी आवश्यकताओं के अनुरूप बेहतर हो सकती हैं। आप एक्सएमएल से मनमाने ढंग से एनोटेशन पढ़ सकते हैं, उन पर आगंतुकों को चला सकते हैं और इसी तरह।

1

किसी भी परियोजना में सटीक उसी बॉयलरप्लेट कोड होगा। आप अपनी खुद की उपयोगिता क्यों नहीं बनाते?

मैं तुम्हें एएसएम इस्तेमाल कर सकते हैं यकीन है:

+0

मैं अपने ही उपयोगिता सहायक लिख सकते हैं। लेकिन मैं पहिया का पुन: आविष्कार नहीं करना चाहता था। एएसएम के लिए, मैं गतिशील प्रॉक्सी कक्षाएं बनाने के लिए CGLIB (जो एएसएम का उपयोग करता है) का उपयोग करता हूं। – mjlee

+0

आप अपनी खुद की उपयोगिता को ओपन-सोर्स प्रोजेक्ट के रूप में लिख सकते हैं, ताकि हम इसे मदद और पुन: उपयोग कर सकें! :-) –

+0

पहला लिंक टूटा हुआ है – Artem

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