"हाय, अमीगो!"

"हैलो, ऋषि।"

"आज मैं आपको एनोटेशन का गहन परिचय दूंगा।"

"जैसा कि आप शायद पहले से ही जानते हैं, एनोटेशन विशेष शब्द हैं जिन्हें कक्षाओं, क्षेत्रों, विधियों और चर के आगे रखा जा सकता है।"

"हाँ। मैं उनसे बहुत बार मिलता हूँ।"

"कभी-कभी उन्हें मेटाडेटा भी कहा जाता है। उनका प्राथमिक उद्देश्य विधियों, क्षेत्रों और कक्षाओं के बारे में विशिष्ट अतिरिक्त जानकारी संग्रहीत करना है।"

"वे इसे किसके लिए स्टोर करते हैं?"

"यह एक बहुत अच्छा सवाल है।"

"लोग एनोटेशन लिखते हैं, जिसका अर्थ है कि किसी को उनकी आवश्यकता होनी चाहिए।"

"टिप्पणियाँ आपको कोड और प्रोग्राम तत्वों के बारे में अतिरिक्त जानकारी संग्रहीत करने देती हैं, लेकिन, औपचारिक रूप से, वे कोड का हिस्सा नहीं हैं।"

"एक्सएमएल उत्पन्न करने के लिए एनोटेशन का उपयोग किया जा सकता है, यह निर्धारित करें कि कोई विधि बहिष्कृत है, बग ट्रैक करें, आदि।"

"यहाँ कोड में एनोटेशन का एक उदाहरण है:"

उदाहरण
@CatInfo(manager=Catmanager.class, unique=true)
class Cat
{
 @Name("Missy")
 private String name;

 @SuppressWarnings(value = "unchecked")
 void getUniqueCatName()
 {

 }
}

"जैसा कि आप देख सकते हैं, डेटा को एनोटेशन में संग्रहीत किया जा सकता है।"

"यदि एनोटेशन में केवल एक फ़ील्ड है जिसे मान कहा जाता है , तो फ़ील्ड का नाम छोड़ा जा सकता है:"

उदाहरण
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"यदि कोष्ठकों के अंदर कोई पैरामीटर नहीं हैं, तो उन्हें छोड़ा भी जा सकता है:"

उदाहरण
@Override
void getUniqueCatName()
{

}

"अपना खुद का एनोटेशन बनाना बेहद आसान है। एनोटेशन की घोषणा करना इंटरफ़ेस घोषित करने के लगभग समान है।"

उदाहरण
@interface CatManager
{
 Class manager();
 boolean unique();
 String name() default "Unknown Cat";
}

"केवल कुछ अंतर हैं।"

"सबसे पहले, आप इंटरफ़ेस शब्द के पहले एक «@» चिन्ह लगाते हैं ।"

"दूसरा, एक एनोटेशन में डिफ़ॉल्ट मान हो सकते हैं। आप डिफ़ॉल्ट मान सेट करने के लिए डिफ़ॉल्ट शब्द का उपयोग करते हैं। उपरोक्त उदाहरण देखें। ये पैरामीटर वैकल्पिक हैं और एनोटेशन जोड़ते समय इसे छोड़ा जा सकता है।"

"आह। यह सब जितना मैंने सोचा था उससे कहीं ज्यादा आसान है। और मैं उनसे वैसे ही बचता रहा हूं जैसे रोबो-डेविल पवित्र जल से बचते हैं। यह बहुत सुखद नहीं होता है जब कोड में बहुत सी ऐसी चीजें होती हैं जिन्हें आप पूरी तरह से नहीं समझते हैं।"

"ओह, यह अच्छा है कि आपने मुझे याद दिलाया - मैं आपको कंपाइलर द्वारा उपयोग किए जाने वाले एनोटेशन के बारे में और बताना चाहता हूं।"

"ऐसे केवल 3 एनोटेशन हैं। ठीक है, अब तक तीन।"

@ बहिष्कृत।

"आप @Deprecated के साथ एक वर्ग या एक विधि को एनोटेट कर सकते हैं। यह संकलक को चेतावनी जारी करने का कारण बनेगा (चेतावनी कोई त्रुटि नहीं है), और IntelliJ IDEA इस विधि को स्ट्राइकथ्रू पाठ के रूप में प्रदर्शित करेगा। कुछ इस तरह  :

उदाहरण
Date date = new Date();
int year = date.getYear();

@Override।

"आपके द्वारा ओवरराइड की जाने वाली विधियों में @Override एनोटेशन को जोड़ना सबसे अच्छा अभ्यास माना जाता है।"

"वह किस लिए है? क्या आईडिया पहले से ही नहीं दिखाता है कि कोई विधि ओवरराइड है या नहीं?"

"सबसे पहले, आईडीईए है और फिर जावा सिंटैक्स है।"

"और दूसरा, काल्पनिक रूप से, आपके पास एक ऐसी स्थिति हो सकती है जहां उपवर्ग में विधि नाम के अनुरूप परिवर्तन के बिना एक आधार वर्ग की विधि का नाम बदल दिया जाता है। कार्यक्रम अपेक्षित रूप से काम नहीं करेगा, लेकिन कोई भी नोटिस नहीं करेगा। इस एनोटेशन का आविष्कार किया गया था इन स्थितियों को होने से रोकें:"

उदाहरण
@Override
void getUniqueCatName()
{

}

@चेतावनियों को दबाना।

"कभी-कभी संकलक बहुत सारी चेतावनियां प्रदर्शित करता है। और कभी-कभी हम «समस्याओं» के बारे में जानते हैं और जानबूझकर संबंधित कोड का उपयोग करना चुनते हैं जो उन्हें बनाता है। आप इनमें से कुछ चेतावनियों को छिपाने के लिए इस एनोटेशन का उपयोग कर सकते हैं।"

"एक प्रोग्रामर कंपाइलर को बताने के लिए @SuppressWarnings एनोटेशन का उपयोग कर सकता है, «इस त्रुटि के लिए चेतावनी न दिखाएं - यह जानबूझकर है।» उदाहरण के लिए:"

उदाहरण
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"समझ गया।"

"मैं थोड़ा थक गया हूँ। मैं अपने सूखे गले को गीला करने जा रहा हूँ। चलो एक ब्रेक के बाद जारी रखें, ठीक है?"

"ज़रूर।"