मुझे आश्चर्य है कि टाइपरामीटर की सीमाओं को परिभाषित करने के लिए हमेशा "implements
" के बजाय "extends
" का उपयोग करने के लिए जावा में एक विशेष कारण है।जावा जेनरिक - क्यों "टी बढ़ाता है" की अनुमति है लेकिन "टी लागू नहीं करता"?
उदाहरण:
public interface C {}
public class A<B implements C>{}
निषिद्ध है लेकिन
public class A<B extends C>{}
सही है। उसका क्या कारण है?
कृपया उत्तर के रूप में Tetsujin no Oni द्वारा उत्तर को चिह्नित करें। – KomodoDave
मुझे नहीं पता कि लोग क्यों सोचते हैं कि Tetsujin नो Oni द्वारा जवाब वास्तव में सवाल का जवाब है। यह मूल रूप से अकादमिक शब्द का उपयोग करके ओपी के अवलोकनों को दोहराता है, लेकिन कोई तर्क नहीं देता है। "कोई 'उपकरण' क्यों नहीं है?" - "क्योंकि केवल 'विस्तार' है। – ThomasR
थॉमसआर: ऐसा इसलिए है क्योंकि यह "अनुमत" का सवाल नहीं है, लेकिन इसका अर्थ यह है कि इस बात का कोई फर्क नहीं पड़ता कि आप किसी प्रकार के सामान्य उपभोग को एक बाधा के साथ कैसे लिखेंगे, चाहे बाधा एक इंटरफ़ेस या पूर्वजों के प्रकार से हो। –