उदाहरण के लिए java.util.Collections में जाँच विधि
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
मैं इसे इस तरह क्यों परिभाषित कर सकता हूं:
public static <T> int binarySearch(List<T> list, T key, Comparator<T> c)
यह जावा में काम क्यों नहीं करेगा?
उत्तर:
उत्तर № 1 के लिए 14आप सकता है इसे इस तरह परिभाषित करें, लेकिन फिर वह आपको खोज नहीं करेगा List<Circle>
इसका उपयोग करना Comparator<Shape>
, उदाहरण के लिए।
मूल रूप से, यहां व्यक्त किए जा रहे विचरण प्रकार की सुरक्षा बनाए रखते हुए अधिक लचीलेपन की अनुमति देते हैं।
जवाब के लिए 0 № 2
बढ़ाना जॉन स्कीट"जवाब थोड़ा सा, जावा की जेनेरिक C ++ की तरह नहीं हैंटेम्पलेट्स। जेवीएम की पिछड़ी अनुकूलता के लिए बनाए गए जेनेरिकों के लिए डिज़ाइन के कुछ निर्णय (जैसे टाइप इरेज़र), अजीब सिंटैक्स और जटिल उपयोग मामलों को जन्म देते हैं। इनमें से कुछ के बारे में आप यहां पढ़ सकते हैं।