inheritance - @Inherited annotation in Java -


हर्बर्ट शिलल्ट ने जावा पर अपनी पुस्तक में उल्लेख किया है,

@Inherited एक मार्कर एनोटेशन है जिसका उपयोग केवल एक और एनोटेशन घोषणा पर किया जा सकता है इसके अलावा, यह केवल उन टिप्पणियों को प्रभावित करता है जिनका उपयोग कक्षा घोषणाओं पर किया जाएगा। @ इनहेरिटेड एक उपवर्ग द्वारा उत्तराधिकार के लिए एक सुपर क्लास के लिए एनोटेशन का कारण बनता है।

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

मुझे पता है कि एनोटेशन हैं नहीं विरासत में मिला अपवाद एक एनोटेशन हैं, जिसका घोषणा @Inherited के साथ एनोटेट किया गया है।

मैंने बाकी सभी एनोटेशनों को समझ लिया है जिसमें java.lang.annotation: @Retention , @ocumented , और @Target < / code>। और अन्य तीनों ???? @ ओवरराइड , @ डीपरेटेड , और @SuppressWarnings

मैं थोड़ा उलझन में हूँ जब यह @Inherited एनोटेशन के लिए आता है क्या कोई इसे एक सरल उदाहरण के साथ प्रदर्शित कर सकता है?

दूसरा, स्टैक ओव्हरफ्लो पर इसके बारे में प्रश्नों में से एक के माध्यम से जाने से, मैं इस पर आया था,

  @Retention (RetentionPolicy.RUNTIME ) @ टार्गेट (एलिमेंट टाईप.एमएमटीओडीओडी) @ ​​इंहेरिटेड पब्लिक @ इंन्टरफेस बाज़ {स्ट्रिंग वैल्यू (); } सार्वजनिक इंटरफ़ेस फ़ू {@ बज़ ("बाज़") शून्य डस्टफुट (); } सार्वजनिक इंटरफ़ेस बार {@ बज़ ("फ्लेम") शून्य डस्टफुट (); } सार्वजनिक वर्ग फ्लिप {@ बज़ ("फ्लॉपी") सार्वजनिक शून्य डस्टफुट () {}}   

@Inherited एनोटेशन का उपयोग कब किया जाता है एनोटेशन @interface baz ?

कृपया मुझे स्प्रिंग फ़्रेमवर्क का उपयोग करते हुए एनोटेशन के साथ संदर्भ में व्याख्या नहीं करें, मैं इसे से परिचित नहीं हूं।

सबसे पहले, जैसा कि आप बोली लगाते हैं,

यह केवल उन टिप्पणियों को प्रभावित करता है जो कि < मजबूत> वर्ग घोषणाएं

इसलिए आपका उदाहरण लागू नहीं होता क्योंकि आप विधियों की व्याख्या कर रहे हैं।

यहां एक है जो। < पूर्व> सार्वजनिक वर्ग का परीक्षण {सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) अपवाद {System.out.println (Bar.class.isAnnotationPresent (InheritedAnnotation.class)) को फेंकता है; }} @ रिसेट (रिटेंशन पोलिसी। आरयूएनटीईएम) @ टार्गेट (एलिमेंटटिप। टीईपीई) // @ इनहेरिटेड @ इंटेरेटेड इनहेरिटेड एननोटेशन {} @ इनहेरिटेड एनोटेशन क्लास फ़ू {} क्लास बार फ़ू {} का विस्तार करता है

यह गलत प्रिंट कस्टम अननोटेशन से @ इनहेरिट की गई के साथ एनोटेट नहीं किया गया है। यदि आप @Inherited के उपयोग को कम करते हैं, तो यह true प्रिंट करेगा।

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -