कम्प्युटर, कार्यक्रम
Java Generics: विवरण र विधिहरू
जाभा भाषा को उपस्थिति सुरु हुने पक्कै यसको कार्यक्षमता मा सकारात्मक क्षणमा ल्याए जो परिवर्तन, धेरै भइरहेको छ। यी महत्वपूर्ण परिवर्तनहरू मध्ये एक जावा जेनेरिक वा generalizations को परिचय छ। यो कार्यक्षमता मात्र भाषा थप लचिलो र बहुमुखी, तर पनि धेरै डाटा प्रकार ल्याउन मामलामा सुरक्षित बनाउन।
तथ्यलाई Java सामान्य कोड generics को परिचय गर्न पूर्व मात्र होइन प्रकार सन्दर्भ वस्तु को मामला मा, सिर्जना हुन सक्ने छ। यस्तो लिंक कुनै पनि वस्तु तोकिएको गर्न सकिन्छ। आखिर, जावा मा कक्षाहरू निहित वस्तु वर्ग राजकुमार छन्। तर, यो दृष्टिकोण लक्ष्य प्रकार गर्न वस्तु देखि वस्तु को स्पष्ट रूपान्तरण सुरक्षा प्रकार सम्बन्धित धेरै त्रुटिहरू को एक संभावित स्रोत हो। generalizations प्रयोग गर्दा सबै casts त्रुटिहरू लागि पनि सम्भावित हटाइ, implicitly र स्वचालित रूपमा प्रदर्शन गर्दै छन्।
Java Generics: विवरण र उदाहरण
हामीलाई तलको आंकडा नियमित कक्षाहरू गर्न सामान्यकरण को आवेदन को एक सरल उदाहरण विचार गरौं। त्यसपछि सबै subtleties र Java जेनेरिक को nuances एक विस्तृत परीक्षा गर्न अगाडि बढ्नुहोस्।
कक्षा घोषणा हुन्छ जसमा जोडी बाटो ध्यान। तुरुन्त कक्षा नाम पछि, पत्र टी संकेत जो खुला कोण कोष्ठक, यो वर्ग को एक उदाहरणका सिर्जना प्रक्रिया छ जो फिलर एक प्रकारको कुनै खास प्रकार द्वारा प्रतिस्थापन गरिनेछ छ। निम्नानुसार देखिन्छ: जोडी <पूर्णांक> obj = नयाँ जोडी <पूर्णांक> ()। यो टी को सट्टा कुनै पनि पत्र तर, नियम, निर्दिष्ट गर्न सक्नुहुन्छ कि, प्रयोग टी, वी वा ई उल्लेख गर्नुपर्छ
नोट: जाभा को आठौं संस्करण सुरु हुने भएको निर्माता मा सन्दर्भ कोण कोष्ठक घोषणा गर्दा खाली बायाँ गर्न सकिन्छ लक्ष्य प्रकार निर्दिष्ट। त्यसैले माथि उदाहरण रूपमा rewritten गर्न सकिन्छ: जोडी <पूर्णांक> obj = नयाँ जोडी <> ()।
जब एक वर्ग यस्तो तरिकाले, आफ्नो शरीर मा सट्टा क्षेत्रहरू, लिंक, तपाईं पत्र प्रयोग गर्न सक्नुहुन्छ विधिहरू द्वारा फर्के वस्तुहरु को विशिष्ट प्रकार को घोषणा गरिएको छ, त्यसपछि। टी देखि कक्षा वस्तु एक विशेष प्रकार, यो मामला मा पहिलो र दोस्रो क्षेत्रहरू प्रकार पूर्णांक को हुनेछ बदलिएको छ सिर्जना गर्दा।
को तर्क र firstItem secondItem तर्क निम्न पनि प्रकार पूर्णांक वा उपवर्ग हुनुपर्छ उपयुक्त निर्माता उल्लेख। तपाईं वस्तु सिर्जना गर्दा तोकिएको थियो के फरक छ भनेर एक डेटा प्रकार प्रसारित गर्न प्रयास भने, संकलक यो गल्ती गरौं छैन। तसर्थ, तर्क निर्माता वस्तु रूपमा हुनेछ जब निम्नानुसार: जोडी <पूर्णांक> obj = नयाँ जोडी <> (नयाँ पूर्णांक (1), नयाँ पूर्णांक (2))। एउटै भएको तर्क र विधिहरू setFirst setSecond लागू हुन्छ। र तपाईं शायद अंदाजा गर्नुभएको रूपमा, विधिहरू getFirst getSecond र प्रकार पूर्णांक को एक मूल्य फिर्ता हुनेछ।
धेरै मापदण्डहरु वर्ग प्रकार संग सामान्यिकृत
सामान्यिकृत कक्षाहरू पनि एक अल्पविराम कोण कोष्ठक मा सेट छन् भनेर प्रकार को धेरै मापदण्डहरु घोषणा गर्न सक्नुहुन्छ। एक मामला जोडी वर्ग तल प्रस्तुत गरिएको छ द्वारा redesigned।
तपाईं देख्न सक्नुहुन्छ, तपाईँ कोण कोष्ठक यो वर्ग को एक उदाहरणका सिर्जना गर्दा मापदण्डहरू रूपमा प्रकार को नै नम्बर संकेत गर्नुपर्छ। तपाईं एक नक्सा डाटा संरचना यस प्रकार परिचित हुनुहुन्छ भने, तपाईंले यसलाई ठीक त्यही सिद्धान्त प्रयोग देख्न सक्छौं। मूल्य को प्रकार - त्यहाँ, पहिलो तर्क कुञ्जी प्रकार र दोस्रो निर्दिष्ट गर्दछ। यो प्रसारित प्रकार वस्तु तर्क ओभरल्याप सक्छ जब कि उल्लेख गर्नुपर्छ। उदाहरणका लागि, निम्न विज्ञापन जोडी वर्ग उदाहरणका बिल्कुल सही छ: जोडी <स्ट्रिङ, स्ट्रिङ> obj।
generalizations केही सुविधाहरू
थप जानुअघि, यो जाभा संकलक कक्षा जोडी विभिन्न संस्करणहरू सिर्जना गर्दैन भन्ने उल्लेख गर्नुपर्छ। वास्तवमा, एक सामान्यिकृत प्रकार सबै जानकारी कम्पाइल को प्रक्रिया मा हटाइएको छ। बरु, तपाईं जोडी वर्ग को एक विशेष संस्करण सिर्जना गर्ने, उपयुक्त प्रकार ल्याउन। तर, कार्यक्रम त्यहाँ अझै पनि कक्षा मात्र एक सामान्य संस्करण हो। यो प्रक्रिया Java जेनेरिक सफाई प्रकार मा भनिन्छ।
एउटा महत्त्वपूर्ण बिन्दु याद गर्नुहोस्। एउटै Java सामान्य वर्ग को विभिन्न संस्करण लिङ्क एक र एउटै वस्तुमा दर्शाउन सक्दैन। जोडी <पूर्णांक> obj1 र जोडी <डबल> obj2: कि, हामी दुई लिंक ठान्नु छ। फलस्वरूप, लाइन मा obj1 = obj2 त्रुटि। दुवै चर प्रकार जोडी <टी> को हो तापनि वस्तुहरु जो तिनीहरूले उल्लेख गर्न, भिन्न छन्। यो Java जेनेरिक सुरक्षा प्रकार को एक प्रमुख उदाहरण हो।
सामान्य कक्षाहरू प्रतिबन्ध
यो generalizations प्रकार सन्दर्भ मात्र लागू गर्न सकिन्छ भनेर थाह महत्त्वपूर्ण छ, कि मापदण्डहरू सामान्य वर्ग Java तर्क वर्ग प्रकार हुनुपर्छ पारित गर्न छ। यस्तो उदाहरण रूपमा यी साधारण प्रकार, डबल वा लामो, स्थान्तरण गर्न सकिँदैन। अर्को शब्दमा, निम्न लाइन जोडी वर्ग घोषणा अनुमति छैन: जोडी
अर्को गम्भीर सीमा को प्यारामिटर प्रकार को एक उदाहरणका सिर्जना गर्न नसक्नुको छ। उदाहरणका लागि, निम्नलिखित लाइन एक संकलनको त्रुटि कारण हुनेछ: टी पहिलो = नयाँ टी ()। किनभने तपाईं तर्क पूर्ण वर्ग वा अमूर्त, वा इन्टरफेस पारित कि अग्रिम थाहा छैन यो, स्पष्ट छ। arrays बनाउनको लागि नै जान्छ।
सीमित प्रकार
यसलाई सामान्य वर्ग Java गर्न तर्कको रूपमा पार गर्न सकिन्छ कि प्रकार को सूची सीमित गर्न आवश्यक छ जब एकदम अक्सर त्यहाँ परिस्थिति हो। हाम्रो वर्ग जोडी हामी तिनीहरूलाई थप गणितीय सञ्चालनका लागि मात्र संख्यात्मक मान encapsulate चाहेको मान गरौं। यसो गर्न हामी प्यारामिटर प्रकार को माथिल्लो सीमा परिभाषित गर्न आवश्यक छ। यो कोण कोष्ठक मा पारित सबै तर्क जन्मजात एक superclass विज्ञापन हालतमा बुझे छ। निम्नानुसार यसलाई हेर्नेछौं: वर्ग जोडी <टी नम्बर विस्तार>। यस तरिका मा, संकलक पाता कि प्यारामिटर टी स्थानापन्न सट्टा गर्न सकिँदैन वा नम्बर वर्ग वा यसको subclasses को एक।
यो एक साधारण स्वागत छ। यस्तो प्रतिबन्ध अक्सर एक र एउटै वर्ग मा अनुकूलता प्रकार मापदण्डहरू प्रदान गर्न प्रयोग गरिन्छ। हाम्रो वर्ग जोडी उदाहरण विचार गर्नुहोस्: वर्ग जोडी <टी, वी टी विस्तार>। यहाँ हामी प्रकार टी मनपरी हुन सक्छ संकलक भन्छु, र वी प्रकार टी प्रकार वा यसको subclasses एक त हुनुपर्छ।
को "तल" सीमित ठ्याक्कै यस्तै छ, तर शब्द को सट्टा शब्द सुपर हिज्जे गर्न को विस्तार। त्यो वर्गीकृत छ वर्ग जोडी <टी सुपर ArrayList> सट्टा टी को एक ArrayList, वा कुनै पनि वर्ग वा इन्टरफेस यो विरासत वा स्थानापन्न हुन सक्छ भनेर भन्छन्।
सामान्य Java विधि र भवन निर्माताहरु
जावा मा, generalizations विधिहरू मात्र कक्षाहरू लागू गर्न सकिन्छ, तर पनि। उदाहरणका लागि, एक सामान्य विधि नियमित कक्षा मा घोषित गर्न सकिन्छ।
माथिको आंकडा देख्न रूपमा, विज्ञापन सामान्यिकृत विधि कुनै ठूलो सम्झौता छ। एक विधि को फिर्ती प्रकार कोण कोष्ठक राख्नु र तिनीहरूलाई मा प्रकार मापदण्डहरू निर्दिष्ट गर्न अघि पर्याप्त।
सबै को निर्माता त्यसै गरी गरेको छ भने:
यस मामला मा कोण कोष्ठक उहाँले कुनै फिर्ती मूल्य छ किनकी, डिजाइनर को नाम अघि राखे। दुवै कार्यक्रम को परिणाम हुनेछ:
पूर्णांक
स्ट्रिङ
Similar articles
Trending Now