2009-07-22 9 views
5

किसी बिंदु पर java.lang.Override इंटरफेस में घोषित विधियों के कार्यान्वयन के साथ उपयोग के लिए उपलब्ध होना शुरू हो गया। मुझे पूरा यकीन है कि ऐसा समय था जब यह सुपरक्लास में परिभाषित विधियों के ओवरराइड के लिए काम करता था।यह जावा एपीआई परिवर्तन कब हुआ जब मैं कैसे पता लगा सकता हूं?

मैं कैसे पता लगा सकता हूं कि (यानी किस संस्करण में) यह परिवर्तन हुआ?

उत्तर

12

उपयोग के बीच हुआ इंटरफेस से लागू है और एक सुपर क्लास से ओवरराइड नहीं जावा 6. देखें @Override specification changes in Java 6 में एक नई सुविधा है:

जावा 5 और जावा @Override के विनिर्देश के लिए 6 परिवर्तन के बीच किए गए हैं। जावा 6 में यह संभव है तरीकों कि एक इंटरफेस के तरीकों को लागू जो जावा में अनुमति नहीं है करने के लिए @Override टिप्पणी जोड़ने के लिए 5.

मैं अंतर पर ध्यान जब एक दोस्त मुझसे कहा कि वह करना पड़ा अपने जावा 6 परियोजना जावा 5.

साथ संकलन करने के लिए सभी @Override एनोटेशन बाहर निकालना दिलचस्प बात यह है कि वहाँ इस परिवर्तन के बारे में कोई प्रलेखन है। @Override का एपीआई विनिर्देश जावा संस्करणों में बिल्कुल वही है। मुझे पता चला कि यह सूर्य डेवलपर्स द्वारा भुला दिया गया था। Peter Ahé, a former developer at Sun, calls it the @Override Snafu

+0

यह जेएलएस के विपरीत है, जैसा कि जावा 6 डॉक्स से जुड़ा हुआ है: "ध्यान दें कि अगर कोई विधि सुपरइंटरफेस से एक विधि को ओवरराइड करती है लेकिन सुपरक्लास से नहीं, तो @ ओवरराइड का उपयोग करके संकलन-समय त्रुटि उत्पन्न होती है।" – skaffman

2

मैं कैसे आप इस पता लगाना चाहते हैं पता नहीं है, लेकिन इसमें 5 और 6 (यानी यह 5 में मना लेकिन 6. में स्वीकार कर लिया है) तरीके हैं कि पर @Override एनोटेशन के

1

आप "आधिकारिक तौर पर" क्योंकि बाहर someone at Sun messed up पा सकते हैं और java.lang.Override की एपीआई दस्तावेज़ में विनिर्देश को अद्यतन नहीं किया जब कार्यान्वयन बदल गया था, और जाहिरा तौर पर विनिर्देश बदल रहा है रिहाई की अनुमति नहीं है के बाद।

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

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