मैं बिना किसी चेतावनी के कोड को संकलित करने के लिए अधिकतर @SuppressWarnings("unchecked")
और @SuppressWarnings("null")
उपरोक्त तरीकों का उपयोग करता हूं, लेकिन मुझे अपने संदेह हैं। यह Stackoverflow प्रश्न मिला । जॉन स्कीट ने इसका उत्तर लिखा, जो मुझे पेचीदा लगता है।
उसके अनुसार,
कभी-कभी जावा जेनेरिक बस आपको वह नहीं करने देता जो आप करना चाहते हैं, और आपको कंपाइलर को प्रभावी ढंग से यह बताने की जरूरत है कि आप जो कर रहे हैं वह वास्तव में निष्पादन के समय कानूनी होगा।
लेकिन क्या होगा अगर एक मौका है कि एक अपवाद फेंक दिया जाएगा? तब एक बुरा विचार चेतावनी को दबा नहीं रहा है? क्या मुझे उन जगहों के बारे में पता नहीं होना चाहिए जहाँ समस्याएं सतह पर हो सकती हैं?
इसके अलावा, क्या होगा अगर कोई और बाद में मेरे कोड को संशोधित करता है और सप्रेसवर्निंग को हटाए बिना कुछ संदिग्ध कार्यक्षमता जोड़ता है? इससे कैसे बचा जा सकता है और / या इसका कोई और विकल्प है?
क्या मुझे उपयोग करना चाहिए @SuppressWarnings("unchecked")
और @SuppressWarnings("null")
?
अपडेट # 1
जहाँ तक अनियंत्रित प्रकार की जातियाँ हैं, इस उत्तर के अनुसार (नीचे टिप्पणी में @gnat द्वारा इंगित), इन चेतावनियों को दबाना आवश्यक है।
असुरक्षित टाइपकास्ट की आवश्यकता को खत्म करने के लिए कई अपरिहार्य जावा पुस्तकालयों को कभी भी अपडेट नहीं किया गया है। उन चेतावनियों को दबाना आवश्यक है, ताकि अन्य महत्वपूर्ण चेतावनियों पर ध्यान दिया जाए और उन्हें सुधारा जा सके।
अन्य चेतावनियों को दबाने के मामले में, अभी भी थोड़ा ग्रे क्षेत्र में।
अद्यतन # 2
ओरेकल डॉक्स के अनुसार (नीचे कुछ उत्तरों द्वारा भी उल्लेख किया गया है):
शैली के रूप में, प्रोग्रामर्स को हमेशा इस एनोटेशन का उपयोग सबसे गहराई से निहित तत्व पर करना चाहिए जहां यह प्रभावी है। यदि आप किसी विशेष विधि में एक चेतावनी को दबाना चाहते हैं, तो आपको उस विधि को उसकी कक्षा के बजाय एनोटेट करना चाहिए।