मुझे इतना सामान्य प्रश्न शीर्षक के बारे में क्षमा करें, लेकिन यह सुनिश्चित नहीं था कि मेरे प्रश्न को सही तरीके से कैसे कॉल करें।वाइल्डकार्ड और स्थिर रैपर के साथ जावा जेनरिक
Collections.singleton
कॉल का परिणाम के डिफ़ॉल्ट प्रकार देखें:
Set<Number> numberSingleton =
Collections.singleton((Number) null);
Set<Collection> rawCollectionSingleton =
Collections.singleton((Collection) null);
Set<Collection<String>> stringCollectionSingleton =
Collections.singleton((Collection<String>) null);
Set<? extends Collection<?>> anyCollectionSingleton =
Collections.singleton((Collection<?>) null);
क्या मैं व्याख्या नहीं कर सकते अंतिम पंक्ति है। ? extends Collection<?>
का उपयोग सरल Collection<?>
के बजाय क्यों किया जाता है?
क्या यह इस के लिए सही समाधान है?
Set<Collection<?>> anyCollectionSingleton =
Collections.<Collection<?>>singleton((Collection<?>) null);
मैं यह सब क्यों शुरू कर दिया:
java.util.Optional.ofNullable((Collection<?>) a).orElse((Collection<?>) b);
यह समस्या ठीक करने के लिए लगता है, लेकिन कीमत क्या है:
मैं संकलन नहीं लाइन के साथ एक मुद्दा था?
java.util.Optional.<Collection<?>>ofNullable((Collection<?>) a).orElse((Collection<?>) b);
आपका प्रश्न यह है कि आईडीई उस अजीब प्रकार को क्यों उत्पन्न करता है? क्योंकि सेट <संग्रह >> सिंगलटन = संग्रह। सिंगलेटन ((संग्रह >) शून्य); ठीक काम करता है – AdamSkywalker
ओरेकल जेडीके 1.8.0_40 मुझे संकलन त्रुटि देता है 'जावा: असंगत प्रकार: java.util.Set> java.util.Set > '। आप किस जावा संस्करण का उपयोग करते हैं? –
Gedrox
नवीनतम, 1.8.0_66 – AdamSkywalker