2011-12-20 8 views
5

का उपयोग क्या है मुझे जावा की यह सुविधा समझ में नहीं आया। मुझे पता है कि यह कोडिंग को आसान बनाता है और कभी-कभी नीदर दिखता है, लेकिन इसका वास्तविक उपयोग क्या है? इसके विपरीत मुझे लगता है कि चेतावनी प्रदर्शित करना बेहतर है, भविष्य में कोई भी कोड में संशोधन करने से पहले उन्हें संदर्भित कर सकता है। क्या यह @SuppressWarnings जटिलता को बढ़ाता है या यह किसी भी कोडिंग मानकों के अनुसार है?@SuppressWarnings

उत्तर

5

अन्य उत्तर पहले से ही @SuppressWarnings एक बहुत की उपयोग के मामलों के बारे में बताया है, लेकिन मैं कहना है कि कभी कभी आप पूरी तरह @SuppressWarnings उपयोग करने के लिए ही भाषा की सीमाओं को पार करने की जरूरत पर जोर देना चाहते हैं, और @SuppressWarnings के इन मामलों में उपयोग में पूरी तरह से कानूनी है ।

अन्य मामलों में @SuppressWarnings का उपयोग संदिग्ध माना जा सकता है, क्योंकि इन मामलों में आप हमेशा कोड को बदलकर चेतावनियों से छुटकारा पा सकते हैं (हालांकि, जाहिर है, यह हमेशा स्वीकार्य नहीं है)।

  • एक सरणी समर्थित सामान्य संग्रह को लागू करने के लिए वर्गों से (जब से तुम नहीं एक सामान्य सरणी बना सकते हैं)
  • एक Map:

    यहाँ कुछ आम मामलों जब आप पूरी तरह @SuppressWarnings बिना चेतावनी से छुटकारा पाने के लिए नहीं कर सकते हैं उनके कार्यान्वयन (चूंकि आप विभिन्न मानचित्र प्रविष्टियों के लिए सामान्य प्रकार पैरामीटर के विभिन्न मान निर्दिष्ट नहीं कर सकते हैं)

1

वास्तविक उपयोग चेतावनियों को दबाने के लिए है। बस। कुछ भी कम नहीं, और कुछ नहीं। मुझे नहीं लगता कि यह किसी भी संकलन दक्षता को प्रभावित करता है लेकिन निश्चित रूप से समय दक्षता नहीं चलाता है।

3

जब आप लीगेसी कोड से निपट रहे हैं जो जेनेरिक (जावा < = 1.4) का समर्थन नहीं करता है, तो यह कास्ट चेतावनियों से छुटकारा पाने का एकमात्र व्यवहार्य तरीका है।

+2

'SuppressWarnings' का उपयोग न केवल जेनिक्स समर्थन या कास्ट चेतावनियों के लिए किया जाता है। –

+1

जो कहता है वे हैं :)? –

+0

अपनी पोस्ट को दोबारा पढ़ें। –

9

प्रोग्रामिंग के दौरान आपको कंपाइलर चेतावनियों के लिए देखना चाहिए और सर्वोत्तम मामले में आपके कोड को कोई चेतावनी (और निश्चित रूप से त्रुटियों) के साथ संकलित करना चाहिए।

लेकिन कभी-कभी आप चेतावनी से छुटकारा नहीं पा सकते हैं और आप जानते हैं कि कोड सही है या बदला नहीं जा सकता है। तब आप संकलक से हर बार परेशान नहीं होना चाहते हैं कि कुछ गड़बड़ है।

तो आप इसे बताए गए आदेश के साथ दबा सकते हैं।

1

SuppressWarnings का उपयोग संकलन के दौरान उपयोग किया जाना है (इसलिए, केवल संकलक जानता है कि SuppressWarnings एनोटेशन को देखते समय क्या करना है)।

JavaDoc कहता है:

The set of warnings that are to be suppressed by the compiler in the annotated element. Duplicate names are permitted. The second and successive occurrences of a name are ignored. The presence of unrecognized warning names is not an error: Compilers must ignore any warning names they do not recognize. They are, however, free to emit a warning if an annotation contains an unrecognized warning name.

1

वहाँ @SuppressWarnings लेकिन सबसे अधिक उपयोगी मामलों में से एक का उपयोग कर के लिए कई कारण हैं:

  • चेतावनी के हजारों के साथ एक मौजूदा परियोजना के बाद। आप चाहते हैं कि आपकी टीम अब चेतावनियों का ख्याल रखे लेकिन आपके पास सभी चेतावनियों को ठीक करने का समय नहीं है।

    एनोटेशन आपको कुछ चेतावनियों को दबाने का मौका देता है जिन्हें तेजी से तय नहीं किया जा सकता है और "साफ" आधार प्राप्त नहीं किया जा सकता है।

    यह साफ आधार आवश्यक है क्योंकि कोई भी चेतावनी के साथ कोड में जांचने से डर नहीं पाएगा, जबकि कोडबेज चेतावनी मुक्त है और टीम में हर कोई तत्काल देखता है जब कोई है 2 चेतावनियों के साथ कोड में जांचना या तो।

  • आप तीसरे पक्ष के libs का उपयोग कर रहे हैं और इसलिए आप उन चेतावनियों से नाराज हो रहे हैं जिन्हें आप ठीक नहीं कर सकते हैं, जिसे आप ज्यादातर मामलों में नहीं चाहते हैं।

मेरी राय में पहला कारण @SuppressWarnings के लिए सबसे अच्छा उपयोग मामलों में से एक है।

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