2012-01-24 12 views
9

नमस्ते: मैं यह सुनिश्चित करना चाहता था कि कक्षा में संकलन समय पर एक एनोटेशन मौजूद है। क्या यह संभव है ? मुझे एहसास है कि annoataions, खुद, वर्ग हैं, तो मुझे ऐसा लगता है - लेकिन मैं बस अपने वर्गों में ऐसी संरचना को लागू करने/कार्यान्वित करने के लिए वाक्य रचनात्मक रूप से कहां और कैसे सुनिश्चित नहीं करता हूं।संकलन समय पर जावा एनोटेशन लागू करना

+0

मैंने अक्सर यूनिट टेस्ट सूट के हिस्से के रूप में उपयोग किए गए एनोटेशन चेकर्स को देखा है। क्या यह आपके लिए काम करेगा? – templatetypedef

+0

ठीक है - मेरे पास कुछ स्थिरांक हैं जिन्हें कक्षाओं से प्राप्त करने की आवश्यकता है। कक्षाओं में एक बदसूरत कन्स्ट्रक्टर है, इसलिए मैं उन्हें गेटर्स का उपयोग करके लागू नहीं कर सकता। तो मैंने सोचा कि मैं एनोटेशन फ़ील्ड के रूप में निरंतर मानकों के साथ एनोटेशन का उपयोग करके कक्षा को एनोटेट कर दूंगा। – jayunit100

उत्तर

14

आप संकलन समय पर मनमाने ढंग से तर्क चलाने के लिए एक एनोटेशन प्रोसेसर लिख सकते हैं।

एक एनोटेशन प्रोसेसर से, आप यह जांच कर सकते हैं कि कक्षा में कोई विशेष संरचना या सदस्य मौजूद है या नहीं, उस वर्ग पर कोई विशेष टिप्पणी मौजूद है या नहीं। वे बहुत लचीला हैं - आप उनके साथ क्या कर सकते हैं इसके बारे में अधिक जानकारी के लिए the API देखें। वे ग्रहण और नेटबीन जैसे प्रमुख आईडीई में भी समर्थित हैं।

एनोटेशन प्रोसेसर लिखने का परिचय here है।

+0

यह एक अच्छा जवाब है। मैं यह देखने के लिए इंतजार करूंगा कि उच्च स्तर या सरल दृष्टिकोण है (यानी मौजूदा कोड/कक्षाओं में इसे लागू करने का एक तरीका)। – jayunit100

+0

जो मैं बता सकता हूं, एनोटेशन प्रोसेसर उन कक्षाओं पर प्रसंस्करण को छोड़ देगा जिनके पास पहले से ही एनोटेशन नहीं है, जो ऐसा लगता है कि ओपी क्या ढूंढ रहा है। हालांकि मैं एक ही समाधान की तलाश में हूं, इसलिए यदि मैं गलत हूं, तो मुझे एक उदाहरण पसंद आएगा। –

+2

यदि आप अपने प्रोसेसर पर @SupportedAnnotationTypes ("*") का उपयोग करते हैं तो यह सभी वर्गों को उठाएगा, भले ही इसमें कोई एनोटेशन न हो। – prunge

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