आदर्श रूप से, जेनिक्स का पूरी तरह से उपयोग शुरू करें। आप से पता चला है नहीं क्या map
के प्रकार है, लेकिन आदर्श आप की तरह कुछ लिखने के लिए सक्षम होना चाहिए:
Set<String> keys = map.keySet();
SortedSet<String> s = new TreeSet<String>(keys);
उस मामले में किया जाएगा जहां map
एक Map<String, Integer>
की तरह कुछ था।
तो map
अपने आप में एक कच्चे प्रकार है, यह कठिन है - फिर से, सबसे अच्छा ठीक हो रही कच्चे प्रकार से छुटकारा अपने कोड बेस भर जेनरिक जोड़ने, शुरू करने के लिए किया जाएगा। यदि नक्शा तीसरे पक्ष के कोड से वापस आ गया है, तो यह हमेशा संभव नहीं होता है। Collections.checkedCollection
के माध्यम से संभवतः - - उस मामले में, आप एक लाइन पर चेतावनी को दबाने के लिए के रूप में आप कच्चे प्रकार से सामान्य प्रकार में बदलने की आवश्यकता हो सकती लेकिन उसके बाद, आप सामान्य प्रकार "ठीक से" के साथ काम करने के लिए सक्षम होना चाहिए। उदाहरण के लिए:
@SuppressWarnings("unchecked") // Just for this one statement
Collection<String> keys = Collections.checkedCollection(map.keySet(),
String.class);
// Now this statement is fully generic with no warnings
SortedSet<String> s = new TreeSet<String>(keys);
स्रोत
2011-03-14 07:07:04
हम अपने कोड के अधिक देखने के लिए की आवश्यकता होगी (संदर्भ देखने के)। मुझे संदेह है क्योंकि आप जेनेरिक का उपयोग नहीं कर रहे हैं और कास्टिंग नहीं कर रहे हैं, लेकिन फिर ... अगर आप उस कोड को पोस्ट नहीं करते हैं जो चेतावनी पैदा कर रहा है, तो हम इतना नहीं कर सकते लेकिन अनुमान लगा सकते हैं। –