संकलित नहीं करता है मैंने निम्नलिखित जेनेरिक क्लास को परिभाषित किया है, लेकिन जब मैं क्लास ऑब्जेक्ट पर इसका उपयोग करता हूं तो यह संकलित नहीं होता है। निर्माता अन्य वस्तु स्वीकार नहीं करेगाडायमंड जावा 7
class Pair<T,V> {
T one;
V two;
public Pair(T one, V two) {
this.one = one;
this.two = two;
}
}
public static void main(String[] args) {
String hamza = "Hamza";
Integer soufiane = 0;
Pair<Object,Object> pairOne = new Pair<>(hamza, soufiane);
Pair<Object,Object> pairTwo = new Pair<Object, Object>(soufiane, hamza);
}
त्रुटि संदेश:
incompatible types: Pair<String,Integer> cannot be converted to Pair<Object,Object>
पहले एक क्यों संकलित नहीं किया था और दूसरा संकलन?
संपादित करें: यह जावा 8
यह बहुत दुर्लभ है कि कुछ संकलित नहीं होता है और संकलक आपको नहीं बताता है कि यह संकलित नहीं होता है। – Tom
मैंने वहां त्रुटि संदेश शामिल किया था! यह हीरा नोटेशन है और इसे कम से कम मेरे ज्ञान के लिए संकलित करना चाहिए। मुझे टेम्पलेट पैरामीटर को शामिल करने के लिए मजबूर क्यों किया गया है जो मुझे समझ में नहीं आता है। –
खैर, जेनेरिक प्रकार पॉलिमॉर्फ नहीं हैं, इसलिए 'जोड़ी <स्ट्रिंग, इंटीजर>' को 'जोड़ी <ऑब्जेक्ट, ऑब्जेक्ट>' को असाइन करना काम नहीं करता है और जावा 7 सोचता है कि यह 'जोड़ी <स्ट्रिंग, इंटीजर>' होना चाहिए क्योंकि आप ने कहा कि पारित तर्क इस प्रकार बताएंगे। दूसरी तरफ जावा 8 सही जेनेरिक प्रकार "ढूंढने" के साथ थोड़ा बेहतर है। – Tom