@Overrideयदि यह उपलब्ध है तो आपको हमेशा तरीकों की व्याख्या करनी चाहिए ।
JDK 5 में इसका मतलब है, JDK 6 में सुपरक्लासेस के तरीके, और 7 का मतलब है सुपरक्लास के तरीकों को ओवरराइड करना, और इंटरफेस के तरीकों को लागू करना। कारण, जैसा कि पहले उल्लेख किया गया है, यह संकलक को उन त्रुटियों को पकड़ने की अनुमति देता है जहां आपको लगता है कि आप एक विधि से ओवरराइडिंग (या कार्यान्वयन) कर रहे हैं, लेकिन वास्तव में एक नई विधि (अलग हस्ताक्षर) को परिभाषित कर रहे हैं।
equals(Object)बनाम equals(YourObject)उदाहरण बिंदु में एक मानक मामला है, लेकिन एक ही तर्क इंटरफेस कार्यान्वयन के लिए बनाया जा सकता है।
मुझे लगता है कि इंटरफेस के तरीकों को लागू करने के लिए एनोटेट करना अनिवार्य नहीं है कारण यह है कि JDK 5 ने इसे एक संकलन त्रुटि के रूप में चिह्नित किया। यदि JDK 6 ने इस एनोटेशन को अनिवार्य कर दिया, तो यह पश्चगामी संगतता को तोड़ देगा।
मैं एक ग्रहण उपयोगकर्ता नहीं हूं, लेकिन अन्य IDEs (IntelliJ) में, @Overrideएनोटेशन केवल तभी जोड़ा जाता है जब इंटरफ़ेस विधियों को कार्यान्वित किया जाता है यदि परियोजना को JDK 6+ प्रोजेक्ट के रूप में सेट किया जाता है। मैं कल्पना करूंगा कि ग्रहण समान है।
हालाँकि, मैंने इस उपयोग के लिए एक अलग एनोटेशन देखना पसंद किया होगा, शायद एक @Implementsएनोटेशन।