Why it is not possible to create a generic fill method in Java? -


मेरे पास निम्न कक्षाएं हैं:

  सारिणी वर्ग डीटीओ {} वर्ग सदस्यता DTO DTO { }  

और निम्नलिखित सामान्य विधि:

  सुरक्षित शून्य भराव (परिणामस्वरूप, आरआर, ऐरेएलआईटी & lt; डीटीओ & gt; एल बढ़ाता है) BusinessLayerException फेंकता {SubscriptionDTO bs; कोशिश {while (rs.next ()) {// initialis bs वस्तु ... l.add (bs); // कंपाइलर त्रुटि यहाँ}} पकड़ (SQLException ई) {e.printStackTrace (); }}  

मुझे समझ में नहीं आ रहा है कि आप डीटीओ उपप्रकारों को भरने के लिए सामान्य तरीके क्यों नहीं बना सकते। क्या मैं कुछ गलत कर रहा हूं या क्या यह डिजाइन से है? यदि हां, तो क्या कोई वैकल्पिक हल है? अग्रिम धन्यवाद।

आपको & lt;? का प्रयोग करना चाहिए ArrayList के सामान्य पैरामीटर के रूप में सुपर डीटीओ & gt; (या & lt; सुपर सब्सक्रिप्शन डीटीओ & gt; , अंक के रूप में)।

से आइटम 28 का ([पीडीएफ के पृष्ठ 28]):

यह याद रखने में आपकी मदद करने वाला एक स्मरणीय है जो वाइल्डकार्ड का उपयोग करने के लिए:

पीईसीएस का मतलब है निर्माता-विस्तार, उपभोक्ता-सुपर।

दूसरे शब्दों में, यदि कोई पैरामीटर वाला प्रकार एक T उत्पादक का प्रतिनिधित्व करता है, तो & lt ;? का उपयोग करें T & gt; ; यदि यह एक T उपभोक्ता का प्रतिनिधित्व करता है, तो इसका उपयोग & lt ;? सुपर टी एंड जी;

इस स्थिति में, एल एक उपभोक्ता है (आप इसे ऑब्जेक्ट पास कर रहे हैं), इसलिए & lt; ? सुपर T & gt; प्रकार उपयुक्त है।


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -