2009-02-18 7 views
50

Possible Duplicate:
When do you use Java’s @Override annotation and why?जावा में @Override के लिए क्या है?

वहाँ @Override दूसरे के साथ एक विधि टिप्पणी करने के लिए की तुलना में संकलक जांच सुपर क्लास कि विधि है कि करने के लिए किसी भी अन्य कारण है?

+1

http://stackoverflow.com/q/94361/697630 –

उत्तर

47

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

उदाहरण के लिए, मैं निम्न त्रुटि देखा है:

public class Foo { 
    private String id; 
    public boolean equals(Foo f) { return id.equals(f.id);} 
} 

इस वर्ग लिखा है, लेकिन बराबरी विधि के लिए @Override टैग जोड़ने के एक संकलन त्रुटि का कारण के रूप में यह बराबरी विधि पर हावी नहीं होता होगा के रूप में संकलित ऑब्जेक्ट पर यह एक साधारण त्रुटि है, लेकिन यह एक अनुभवी डेवलपर की आंख से बच सकती है

+0

@AngryDuck ऐसा इसलिए है क्योंकि आप 3 प्रश्न चिह्नों का उपयोग करते हैं। – Det

21

यह न केवल कंपाइलर चेक बनाता है - हालांकि यह उपयोगी बनाने के लिए पर्याप्त होगा; यह डेवलपर के इरादे को भी दस्तावेज करता है।

उदाहरण के लिए, यदि आप किसी विधि को ओवरराइड करते हैं लेकिन इसे स्वयं से कहीं भी उपयोग नहीं करते हैं, तो कोड में आने वाले किसी व्यक्ति को आश्चर्य हो सकता है कि पृथ्वी पर क्यों है। एनोटेशन इसका उद्देश्य बताता है।

+2

में भी व्यापक रूप से उत्तर दिया गया है, मुझे आश्चर्य है कि जब आपने इस प्रश्न का उत्तर दिया था तो आपकी प्रतिष्ठा के मुद्दे क्या थे। –

+0

@OmarTariq: किसी न किसी अनुमान पर, लगभग 50K मुझे संदेह है। –

+0

@OmarTariq तो क्या मैं :) अपनी टिप्पणी को वोट दिया ... –

2

नहीं - सिवाय इसके कि यह भी पठनीयता में सुधार

10

नहीं, आप इसे काफी पसंद करते हैं।

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

संबंधित मुद्दे