तरहऊपरी बाउंड के साथ मिलान कैप्चर पर टूटी हुई जांच टाइप करें?
public class Play {
public static void main(String[] args) throws Exception {
outer(Integer.class, inner("abc"));
}
static <C> void outer(Class<C> c, List<? super C> s){
}
static <C> List<C> inner(C c) {
return null;
}
}
एक कक्षा बनाएं और यह जावा 8 में कम्पाइल हो गया! (दोनों ग्रहण 4.5 और JDK1.8_25 में) https://ideone.com/Q9JLHP
ग्रहण में, सीमा सही ढंग से अनुमान लगाया जाता है, लेकिन कैसे कर सकता है outer
के कब्जा Supplier<? super Integer>
कभी तर्क Supplier<String>
से संतुष्ट कर दिया गया ??
संपादित करें: यह स्पष्ट है कि यह जावा 8-विशिष्ट है और उदाहरण को कम भ्रमित कर दिया गया है।
@ bayou.io यह उदाहरण के लिए मैंने केवल मनमाना सामान्य प्रकार चुना है। मुझे यकीन है कि संकलक इसे विशेष रूप से यहां नहीं मानता है। मैं इस भ्रम से बचने के लिए उदाहरण अपडेट करूंगा। –