this question से करीब चार वोट वापस आ गए हैं, मैं फिर से एक और संकीर्ण सवाल पूछने की कोशिश कर रहा हूं कि उम्मीद है कि समुदाय अधिक अनुकूलता से देखेंगे।पीछे की संगतता का समर्थन करने के लिए कौन से जावा डिज़ाइन स्पष्ट रूप से किए गए हैं?
जावा में कौन से विशिष्ट डिज़ाइन निर्णय इस तरह से किए जाने के लिए दस्तावेज किए गए हैं क्योंकि वे पसंदीदा डिजाइन निर्णय नहीं थे, बल्कि इसलिए कि पिछली संगतता का समर्थन करना आवश्यक था।
स्पष्ट मामला जेनेरिक है, जहां आप रनटाइम पर प्रकार पैरामीटर का पता नहीं लगा सकते हैं। (तो तुम ऐसा नहीं कर सकते:
public void addEmptyMember(List<?> someList) {
if (someList instanceof List<String>) {
((List<String>) someList).add("");
}
}
अन्य क्या ऐसे उदाहरण भाषा डिजाइन और मानक एपीआई
क्या तीसरा व्यक्ति वास्तव में पिछड़ा संगतता के लिए एकमात्र/मुख्य कारण के रूप में चुना गया है? ऐसा लगता है कि यह दिमाग में पिछड़े संगतता के बावजूद भी समझ में आता है। –
शुरुआत से भाषा में मौजूद varargs के किसी भी कार्यान्वयन में आप चाहते हैं कि "इस सरणी को विस्फोट करें और इसके तत्वों को varargs में तर्क के रूप में पास करें" के लिए एक अलग वाक्यविन्यास होना चाहिए।(उदाहरण के लिए, * अजगर में नोटेशन को कॉल करने का तर्क है, या यहां तक कि लागू कार्य भी lisp में) वे जावा में ऐसा नहीं करना चाहते थे, हालांकि, क्योंकि वे मौजूदा एपीआई कार्यों को "अपग्रेड" करने में सक्षम होना चाहते थे, सभी पुराने कॉलर्स (जो एक सरणी की उम्मीद है) होने के बावजूद अभी भी काम करते हैं। –