2010-04-15 14 views
7

मैं जावा से JSON आउटपुट उत्पन्न करने के लिए JSON.simple का उपयोग कर रहा हूं। लेकिन हर बार जब मैं फोन jsonobj.put ("इस", "है कि"), मैं ग्रहण में एक चेतावनी दिखाई:जेनिक्स के बिना विरासत कोड का उपयोग करते समय एक्लिप्स चेतावनियों से कैसे बचें?

प्रकार की सुरक्षा: विधि पुट (वस्तु, वस्तु) कच्चे प्रकार HashMap के अंतर्गत आता है। सामान्य प्रकार HashMap के सन्दर्भ पैरामिट्रीकृत

स्वच्छ ठीक करता है, तो JSONObject genericized थे होगा होना चाहिए, लेकिन जब से यह नहीं है, मैं किसी भी सामान्य प्रकार पैरामीटर इसे ठीक करने नहीं जोड़ सकते। मैं जितनी संभव हो उतनी चेतावनियों को बंद करना चाहता हूं, इसलिए "@SuppressWarnings (" अनचेक ")" कई तरीकों से अपरिहार्य है, लेकिन क्या मेरे पास चेतावनियों को छोड़कर कोई अन्य विकल्प है?

उत्तर

7

यहां एक विकल्प है। यह थोड़ा बदसूरत है, लेकिन आपको दबाने वाली चेतावनी को केवल उस व्यक्तिगत ऑपरेशन के लिए गुंजाइश करने की अनुमति देता है।

उस पर एक समारोह जो अनियंत्रित डाली करता जोड़ें, और दबाने चेतावनी:

@SuppressWarnings("unchecked") 
private final static Map<Object,Object> asMap(JSONObject j) 
{ 
    return j; 
} 

तो फिर तुम यह कॉल कर सकते हैं संकलक चेतावनी के बिना: इस तरह

asMap(jsonobj).put("this", "that"); 

, आपको लगता है कि यकीन है कि हो सकता है आप किसी भी चेतावनी को दबा नहीं रहे हैं जिसे आप वास्तव में देखना चाहते हैं।

+0

नेटबीन्स में, जो मेरे लिए चेतावनियों का एक और सेट देता है: > निजी विधि एएपी को अंतिम घोषित किया गया है > निजी विधि एएपी घोषित किया गया है – user919860

4

आपके पास प्रति प्रोजेक्ट कंपाइलर सेटिंग्स हो सकती हैं और आप उन चेतावनियों को पर अनदेखा कर सकते हैं।

+3

यह प्रासंगिक तरीकों से @SuppressWarnings ("अनचेक") जोड़ने से भी अधिक चरम है; मेरी समस्या यह है कि मैं इसे दबाकर जितनी संभव हो उतनी चेतावनियां देखना चाहूंगा। –

+0

आप अपनी विरासत परियोजना विन्यास में इस विशिष्ट चेतावनी को दबा सकते हैं। इसके बारे में कुछ भी चरम नहीं है। –

+0

यह चरम है क्योंकि * उसकी * परियोजना विरासत नहीं है, केवल वह लाइब्रेरी है जिसका वह संदर्भ दे रहा है। आपका सुझाव चेतावनी को दबाने के लिए अपनी पूरी परियोजना के लिए है। – Kip

4

लाइब्रेरी के लिए कुछ सहायक विधियां या रैपर कक्षाएं लिखें। केवल उन सहायकों को @SuppressWarnings("unchecked") जोड़ें। फिर लाइब्रेरी के साथ बातचीत करने के लिए हेल्पर्स का उपयोग करें।

+0

यह अब तक का सबसे अच्छा समाधान प्रतीत होता है, धन्यवाद। ग्रहण मुझे इस बारे में चेतावनी देना गलत है, है ना? ये त्रुटियां JSONObject कोड में होनी चाहिए, न कि मेरे कोड। –

+0

@ पॉल: ग्रहण सही है, क्योंकि जावा के लिए यह वही तरीका है। आपको चेतावनी मिलती है, क्योंकि आप हैश मैप से कच्ची विधि का उपयोग कर रहे हैं (आपको ऐसा करने के लिए मजबूर होना पड़ता है, क्योंकि JSONObject हैश मैप बढ़ाता है)। –

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

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