जावा एनोटेशन


114

जावा में एनोटेशन का उद्देश्य क्या है? मेरे पास यह फजी विचार है कि कहीं टिप्पणी और वास्तविक कोड के बीच में है। क्या वे रन टाइम पर कार्यक्रम को प्रभावित करते हैं?

उनके विशिष्ट उपयोग क्या हैं?

क्या वे जावा के लिए अद्वितीय हैं? क्या कोई C ++ समकक्ष है?


9
आप एनोटेशन के साथ कुछ वास्तव में दुष्ट चीजें कर सकते हैं। उदाहरण के लिए, यदि आप स्प्रिंग फ्रेमवर्क और उनके @ ट्रेंसेक्शनल एनोटेशन को जानते हैं, जो अपवाद / त्रुटि पर विधि मंगलाचरण और रोलबैक से पहले लेनदेन शुरू करता है और सफल लेनदेन पर शुरू होता है। यह एसओसी-सिद्धांत (चिंता का अलगाव) का पूरी तरह से समर्थन करता है। बहुत साफ ! जावा नियम! :-)

1
यह मेरे लिए 3 सवालों की तरह लग रहा है। अपने आप में दूसरा भी व्यापक है।
राेडवल्ड

सिंटैक्स द्वारा सभी एनोटेशन इंटरफ़ेस की तरह दिखते हैं। तो, संकलक या जेवीएम अपने उद्देश्य को कैसे जानता है? मान लीजिए अगर हम @ ओवरराइड -> लेते हैं, तो जाँच करें कि क्या विधि ठीक से ओवरराइड करती है या नहीं @ लेन-देन, जैसा कि ऊपर बताया गया है, यह लेन-देन से संबंधित सामान करता है। इन सभी टिप्पणियों के लिए, हम परिभाषा / तर्क कहां पा सकते हैं?
परमीश कोरकुट्टी

जवाबों:


80

एनोटेशन मुख्य रूप से कोड द्वारा उपयोग किया जाता है जो अन्य कोड का निरीक्षण कर रहा है। वे अक्सर अपने व्यवहार को बदलने के लिए रन-टाइम पर मौजूदा कक्षाओं को संशोधित करने (यानी सजाने या लपेटने) के लिए उपयोग किया जाता है। JUnit और Hibernate जैसे फ्रेमवर्क एनोटेशन का उपयोग करके कोड की मात्रा को कम करने के लिए आपको फ़्रेमवर्क का उपयोग करने के लिए खुद को लिखने की आवश्यकता होती है।

ओरेकल के पास अपनी साइट पर जावा में अवधारणा और इसके अर्थ की अच्छी व्याख्या है


17

इसके अलावा, क्या वे जावा के लिए अद्वितीय हैं, क्या कोई C ++ समकक्ष है?

नहीं, लेकिन VB और C # में ऐसे गुण हैं जो एक ही चीज हैं।

उनका उपयोग काफी विविध है। एक विशिष्ट जावा उदाहरण @Overrideका कोड पर कोई प्रभाव नहीं पड़ता है, लेकिन संकलक द्वारा इसका उपयोग चेतावनी (या त्रुटि) उत्पन्न करने के लिए किया जा सकता है यदि सजाया गया तरीका वास्तव में किसी अन्य विधि को ओवरराइड नहीं करता है। इसी तरह, तरीकों को अप्रचलित चिह्नित किया जा सकता है।

फिर प्रतिबिंब है। जब आप अपने कोड में एक वर्ग के प्रकार को दर्शाते हैं, तो आप विशेषताओं को एक्सेस कर सकते हैं और वहां मिली जानकारी के अनुसार कार्य कर सकते हैं। मुझे जावा में कोई उदाहरण नहीं पता है लेकिन .NET में इसका उपयोग कक्षाओं के लिए सिलसिलेवार जानकारी उत्पन्न करने के लिए कंपाइलर द्वारा किया जाता है , संरचनाओं की मेमोरी लेआउट निर्धारित करता है और विरासत पुस्तकालयों (दूसरों के बीच) से फ़ंक्शन आयात की घोषणा करता है । वे यह भी नियंत्रित करते हैं कि आईडीई फॉर्म डिजाइनर कैसे काम करता है।

/ संपादित करें: कक्षाओं पर विशेषताएँ टैग इंटरफेस ( जावा में सीरियल करने योग्य ) की तुलना में हैं। हालाँकि, .NET कोडिंग दिशानिर्देश कहते हैं कि टैग इंटरफेस का उपयोग न करें। साथ ही, वे केवल क्लास लेवल पर काम करते हैं, मेथड लेवल पर नहीं।


13

एंडर्स एक अच्छा सारांश देता है, और यहाँ एक JUnit एनोटेशन का एक उदाहरण है

@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
    readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}

यहां @Testएनोटेशन JUnit से कह रहा है कि flatfileMissingविधि एक परीक्षण है जिसे निष्पादित किया जाना चाहिए और यह अपेक्षित परिणाम एक फेंक दिया गया है IOException। इस प्रकार, जब आप अपने परीक्षण चलाते हैं, तो इस पद्धति को बुलाया जाएगा और यह परीक्षण पास हो जाएगा या विफल हो जाएगा या नहीं IOException


7

जावा में एनोटेशन प्रोसेसिंग टूल (एप्ट) भी है जहां न केवल आप एनोटेशन बनाते हैं, बल्कि यह भी तय करते हैं कि ये एनोटेशन सोर्स कोड पर कैसे काम करते हैं।

यहाँ एक परिचय है।


4

कुछ शांत चीजें देखने के लिए आप एनोटेशन के साथ कर सकते हैं, मेरे जावाबीन एनोटेशन और एनोटेशन प्रोसेसर को देखें

वे कोड बनाने के लिए महान हैं, अपने निर्माण के दौरान अतिरिक्त सत्यापन जोड़ रहे हैं, और मैं उन्हें एक त्रुटि संदेश ढांचे के लिए भी उपयोग कर रहा हूं (अभी तक प्रकाशित नहीं हुआ है - मालिकों के साथ स्पष्ट करने की आवश्यकता है ...)।


1

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

विस्तार से पढ़ने के लिए, जावा एनोटेशन पर एक अच्छा ट्यूटोरियल है


0

आप जावा के @ ऑवरराइड एनोटेशन का उपयोग कब और क्यों करते हैं? इस लिंक पर एक प्रश्न का संदर्भ है जब किसी को ओवरराइड एनोटेशन (@override) का उपयोग करना चाहिए .. इससे एनोटेशन की अवधारणा को बेहतर ढंग से समझने में मदद मिल सकती है। चेक आउट करें।


0

जब EJB की बात आती है, तो एक स्पष्ट मध्य-वेयर दृष्टिकोण पर Implicit मध्य-बर्तन दृष्टिकोण को चुनने के रूप में जाना जाता है, जब आप एनोटेशन का उपयोग करते हैं, तो आप कस्टमाइज़ कर रहे हैं कि आपको API से वास्तव में क्या चाहिए उदाहरण के लिए आपको बैंक हस्तांतरण के लिए लेनदेन विधि को कॉल करने की आवश्यकता है : एनोटेशन का उपयोग किए बिना: कोड होगा

transfer(Account account1, Account account2, long amount)    
{
   // 1: Call middleware API to perform a security check
   // 2: Call middleware API to start a transaction
   // 3: Call middleware API to load rows from the database
   // 4: Subtract the balance from one account, add to the other
   // 5: Call middleware API to store rows in the database
   // 6: Call middleware API to end the transaction
}

एनोटेशन का उपयोग करते समय आपके कोड में मध्य-वेयर सेवाओं का उपयोग करने के लिए कोई बोझिल एपीआई कॉल नहीं होती है। कोड स्वच्छ और व्यावसायिक तर्क पर केंद्रित है

transfer(Account account1, Account account2, long amount) 
{
   // 1: Subtract the balance from one account, add to the other
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.