पाठ 37 / 38
एनोटेशन क्या हैं?
समझें एनोटेशन क्या हैं और क्या नहीं, और उन मुट्ठी-भर built-in एनोटेशन से सहज हों जो लगभग हर Java कोडबेस में दिखते हैं।
मेटाडेटा, व्यवहार नहीं
एक एनोटेशन (@Something) कोड — क्लास, मेथड, फ़ील्ड, या पैरामीटर — पर मेटाडेटा जोड़ता है, जिसे कम्पाइलर, कोई टूल, या फ़्रेमवर्क (जैसे Spring) पढ़कर उस पर कार्य कर सकता है। एनोटेशन खुद रनटाइम पर कुछ नहीं करता जब तक कि कुछ और इसे खोजने के लिए न लिखा गया हो।
ज़रूरी built-in एनोटेशन
@Override कम्पाइलर से जाँच करवाता है कि मेथड सच में सुपरटाइप के मेथड को ओवरराइड करता है — टाइपो तुरंत पकड़ लेता है। @Deprecated किसी API को निरुत्साहित चिह्नित करता है, कॉल साइट पर कम्पाइलर चेतावनी देता है। @FunctionalInterface कम्पाइलर से जाँच करवाता है कि इंटरफ़ेस में ठीक एक ही एब्स्ट्रैक्ट मेथड है, ताकि इसे लैम्ब्डा टार्गेट की तरह उपयोग किया जा सके।
class Old {
@Deprecated
void legacyMethod() { /* callers now get a compiler warning */ }
}
class Dog extends Animal {
@Override
String sound() { return "woof"; } // typo in the name -> compile error, not a silent new method
}
@FunctionalInterface
interface Transformer<T, R> {
R apply(T input); // exactly one abstract method
}आगे और कहाँ मिलेंगे
फ़्रेमवर्क कस्टम एनोटेशन पर बहुत निर्भर करते हैं — @Test (JUnit), @Entity (JPA), @RestController (Spring)। ये एडवांस्ड जावा में आते हैं; Core Java के लिए, एनोटेशन क्या है यह जानना और built-in को सहजता से पढ़ना ही काफ़ी है।