मैं एक सामान्य प्रकार के लिए निम्नलिखित हस्ताक्षर के साथ एक स्थिर कार्य हो T
(संकलन समय त्रुटि) जावा में एक सामान्य प्रकार से एक सामान्य प्रकार का निष्कर्ष निकालते
public static<T> List<T> sortMap(Map<T, Comparable> map)
जो कुछ संपत्ति के साथ नक्शा कुंजी की एक सूची प्रदान करना चाहिए ।
अब मैं एक सामान्य वर्ग के भीतर स्थिर समारोह है, जो एक सदस्य चर के रूप में नक्शा है बुला में टाइप S
Map<S,Double> map
की एक सामान्य HashMap पास करना चाहते हैं।
मैंने नीचे एक न्यूनतम कोड उदाहरण सूचीबद्ध किया है।
required: Map<T#1,Comparable>
found: Map<T#2,Double>
reason: cannot infer type-variable(s) T#1
(argument mismatch; Map<T#2,Double> cannot be converted to Map<T#1,Comparable>)
कैसे इस समस्या को हल कर सकते हैं:
हालांकि, मैं एक त्रुटि संदेश (S
और T
दोनों टी के हैं, लेकिन मेरे कोड के अलग-अलग दायरों में है, यानी T#1
= T
, T#2
= S
) मिल सकता है? मुझे हैरान है कि जावा एक सामान्य प्रकार से जेनेरिक प्रकार को घुमाने की अनुमति नहीं देता है। जावा में कौन सी संरचना उस तरह के अधिक अमूर्त कोड तर्क के साथ काम करने के लिए उपयोग कर सकती है?
कोड:
public class ExampleClass<T> {
Map<T, Double> map;
public ExampleClass() {
this.map = new HashMap();
}
//the following line produces the mentioned error
List<T> sortedMapKeys = UtilityMethods.sortMap(map);
}
public class UtilityMethods {
public static<T> List<T> sortMap(Map<T, Comparable> map) {
// sort the map in some way and return the list
}
}
कृपया वर्ग कोड दर्शकों को दिखाने:
उसके बाद, आप के साथ विधि आह्वान करने के लिए सक्षम हो जाएगा। –
'स्थिर 'विधियां सदस्य चर का उपयोग नहीं कर सकती हैं; और जावा का आप किस संस्करण का उपयोग करते हैं? –
मुझे लगता है कि आपको समस्या को समझने के लिए हमें कुछ और कोड जोड़ना होगा। –