मुझे पता है के रूप में बिना एक सूची को सौंप दिया जाता है, जावा में जेनरिक के मुख्य उद्देश्यों में से एक प्रदान कर रहा है संकलन-समय प्रकार सुरक्षा। यदि यह संकलित हो जाता है, तो कोड बिना किसी समस्या के चलाएगा।स्ट्रिंग एक संकलन त्रुटि
तो फिर निम्नलिखित कोड संकलित किया जा रहा है?
public static void main(String[] args) {
String s = getList();
}
private static <T extends List> T getList() {
return (T)new ArrayList();
}
यह ठीक संकलित करता है। मेरा प्रकार-सुरक्षित संकलन कहां है? getList()
विधि में String
कक्षा के साथ कुछ भी सामान्य नहीं है।
नहीं, यह गैर-कच्चे प्रकारों का उपयोग करते समय भी संकलित करता है। –
@MarkusFischer, मैं भी इस बारे में विचार है, लेकिन संकलक पता चलता है कि स्ट्रिंग एक अंतिम वर्ग है और किसी भी उपवर्गों – Andrew
@MarkusFischer नहीं हो सकता है, तो आप एक जवाब के लिए इस टिप्पणी को बदलने चाहिए। मुझे लगता है कि यह बिल्कुल सही मुद्दा है। 'MyClass स्ट्रिंग इम्प्लेमेंट्स सूची बढ़ाता है' संकलन समय पर संभव हो सकता है क्योंकि संकलक स्ट्रिंग को 'अंतिम' मानते नहीं हैं, जैसा आपने कहा था, जेनेरिक-चेक के लिए। – Zabuza