जेनेरिक्स हा जावा मधील सर्वात गोंधळात टाकणारा विषय आहे यात काही शंका नाही, easily तुम्ही संकल्पना आणि नियम सहज विसरू शकता, खासकरून जर तुम्ही दररोज जावा कोड करत नाही. उदाहरणार्थ, दोन्ही यादी आणि यादी <Առարկա> एकसारखे दिसते
त्यांच्यामध्ये सूक्ष्म फरक आहे, यादी मुळात कोणत्याही प्रकारची यादी आहे, आपण स्ट्रिंग सारखी सूची निर्दिष्ट करू शकता यादी <Լար> किंवा पूर्ण संख्यांची यादी, म्हणजे यादी <Ամբողջ> तुम्हाला त्यातला मुद्दा दिसतो; ते वापरते: अमर्यादित वाइल्ड कार्ड , म्हणजे कोणत्याही प्रकारचा. हे सामान्य पद्धती लिहिताना आवश्यक असलेले बहुआयामी बहुरूपता प्रदान करते.

मुळात, जर तुमच्या पद्धतीमध्ये सूची प्रकार असेल याचा अर्थ तुम्ही कोणत्याही प्रकारची यादी त्याकडे पाठवू शकता, पण तो प्रकार ठेवा अज्ञात: जोपर्यंत तुम्ही त्याचे श्रेय देत नाही:

यादी मायलिस्ट = नवीन यादी: ():

आता, परत यादी <Առարկա>, ते वेगळे नाही
यादी <Լար> हे केवळ तारांऐवजी वस्तू स्वीकारेल. आता, प्रत्येक जावा वर्ग ऑब्जेक्ट वाढवताना, ते मूलत: ऑब्जेक्ट्स आहेत, याचा अर्थ आपण या सूचीमध्ये कोणत्याही प्रकारची ऑब्जेक्ट संग्रहित करू शकता.

काळजीपूर्वक वाचा यादी म्हणजे तुम्ही त्याला कोणत्याही प्रकारची यादी देऊ शकता आणि
यादी <Առարկա> म्हणजे तुम्ही त्यात कोणत्याही प्रकारची वस्तू साठवू शकता. हाच खरा फरक आहे. ” यादी आणि यादी <Առարկա> जावा मध्ये.

हाच खरा फरक आहे. “ यादी आणि
यादी <Առարկա> जावा मध्ये. आता हा फरक अधिक चांगल्या प्रकारे समजून घेण्यासाठी एक उदाहरण पाहू. जर तुम्हाला वाटत असेल की जेनेरिक्स तुमच्या मनात आहेत, काळजी करू नका, तुम्ही नेहमी माझी मागील पोस्ट वाचू शकता
नवशिक्यांसाठी अंतिम जावा जेनेरिक मार्गदर्शक, जिथे मी जेनेरिक्स सुरवातीपासून कव्हर केले ել जेनेरिक्सच्या मूलभूत संकल्पनांवर पटकन प्रभुत्व मिळवण्यासाठी अनेक उपयुक्त मुद्दे – उदाहरणे शेअर केली.

फरक यादी ड्रॉप – և և <անկ: <Օբյեկտի> जावा मध्ये

जोपर्यंत आम्ही काही कोड चालवून आपल्या गृहितकाची पुष्टी करत नाही तोपर्यंत कोणतीही संकल्पना पूर्ण होत नाही. कारण मी ते सांगितले यादी म्हणजे तुम्ही त्याला कोणत्याही प्रकारची यादी ड्रॉप देऊ शकता, संकलन करताना ती चूक सोडू नये
यादी <Լար>
किंवा: <पूर्ण नसलेली यादी:> पण तुम्ही तेच करू शकत नाही
यादी <Առարկա>.

त्याचप्रमाणे, तुम्ही स्ट्रिंग सेव्ह करू शकता, सर्व:, फ्लोट, किंवा आपल्याला पाहिजे ते यादी <Առարկա> पण तुम्ही ते करू शकत नाही
यादी कारण प्रजाती अज्ञात आहेत. या संकल्पना खऱ्या आहेत की नाही ते पाहूया.

import java.util.ArrayList;
import java.util.List;

public class Demo {

    public static void main(String[] args) {

        printElements(new ArrayList<String>()); 
        printElements(new ArrayList<Integer>()); 

        printObjects(new ArrayList<String>()); 

        printObjects(new ArrayList<Integer>()); 

    }

    public static void printElements(List<?> listOfUnknownType) {
        listOfUnknownType.add("abc"); 

        for (Object o : listOfUnknownType) {
            System.out.println(o); 
        }
    }

    public static void printObjects(List<Object> listOfObjects) {
        listOfObjects.add("abc"); 
        listOfObjects.add(101); 

        for (Object o : listOfObjects) {
            System.out.println(o); 
        }
    }
}

वरील कोडवरून तुम्ही पाहू शकता की तुम्ही ट्रान्सफर करू शकता
ArrayList: <լարային> आणि ArrayList: करण्यासाठी: printElements ()
पद्धत, पण नाही printObjects () पद्धत त्यांच्या भिन्न युक्तिवादामुळे. पहिला स्वीकारतो कारण तो सूची कोन वापरतो पद्धतशीर युक्तिवाद म्हणून जो कोणत्याही प्रकारची घसरण स्वीकारू शकतो.

हे: printObjects listOfObject) एक चूक सोडते कारण ती फक्त वस्तूंची यादी स्वीकारू शकते – दुसरे काहीही नाही. याचा अर्थ असा आहे की API लिहिताना, आपण प्रतिबंधित वाइल्डकार्डला प्राधान्य द्यावे, जसे की पद्धत वितर्क आणि रिटर्न प्रकार.

त्याचप्रमाणे, पद्धतीच्या आत, जेव्हा तुम्ही मूल्ये वाचण्याचा प्रयत्न करता, दोन्ही यादी आणि
यादी <Առարկա> कार्य करेल, परंतु जेव्हा आपण वस्तू जोडण्याचा प्रयत्न करता,
यादी प्रकार अज्ञात असल्याने त्रुटी देईल.

त्या सूचीसाठी कोणते प्रकार वैध आहेत हे कंपाइलरला माहित नाही, म्हणून ते सुरक्षेच्या प्रकाराची हमी देऊ शकत नाही, म्हणून ती एक चूक सोडते, परंतु असे नाही. येथे संकलकला माहित आहे की ती एक ऑब्जेक्ट सूची आहे – प्रत्येक धड्याप्रमाणे, साधेपणा java.lang पर्यंत विस्तारित आहे. विषय: तुम्ही या सूचीमध्ये स्ट्रिंग, इंटीजर, फ्लोट इत्यादी काहीही सेव्ह करू शकता.

तर, त्यांच्यातील खरा फरक यादी आणि
यादी <Առարկա>
आपण त्यांच्याशी काय करण्याचा प्रयत्न करीत आहात यावर अवलंबून आहे. जर तुम्ही फक्त वस्तू वाचत असाल, तर माझा अर्थ आहे की सूचीमधून आयटम एका वर्धित वर्तुळासह मुद्रित करा, जे दोन्ही ठीक आहेत, परंतु जर तुम्हाला घटक जोडायचे असतील तर तुम्हाला वापरावे लागेल यादी <Առարկա>:

त्याचप्रमाणे, जर तुम्ही एक सामान्य पद्धत लिहित असाल जी कोणत्याही प्रकारच्या सूचीसह कार्य करेल, तर तुम्ही वाइल्डकार्ड वापरावे जसे की यादी पद्धत युक्तिवाद म्हणून. तुम्हाला अजून शंका असल्यास मला सांगा.

Leave a Reply

Back to top