जावा जेनरिक (उदाहरण के साथ)

इस ट्यूटोरियल में, हम जावा जेनिक्स के बारे में जानेंगे कि कैसे जेनरिक क्लास और तरीके और उदाहरणों की मदद से इसके फायदे बनाए जा सकते हैं।

जावा जेनेरिक हमें एकल वर्ग, इंटरफ़ेस और विधि बनाने की अनुमति देता है जिसका उपयोग विभिन्न प्रकार के डेटा (ऑब्जेक्ट) के साथ किया जा सकता है।

इससे हमें अपने कोड का पुन: उपयोग करने में मदद मिलती है।

नोट : जेनेरिक्स आदिम प्रकार (साथ काम नहीं करता int, float, char, आदि)।

जावा जेनरिक क्लास

हम एक ऐसा वर्ग बना सकते हैं जिसका उपयोग किसी भी प्रकार के डेटा के साथ किया जा सकता है। ऐसी कक्षा को जेनरिक क्लास के रूप में जाना जाता है।

यहाँ हम जावा में जेनेरिक क्लास कैसे बना सकते हैं:

उदाहरण: एक जेनरिक क्लास बनाएं

 class Main ( public static void main(String() args) ( // initialize generic class // with Integer data GenericsClass intObj = new GenericsClass(5); System.out.println("Generic Class returns: " + intObj.getData()); // initialize generic class // with String data GenericsClass stringObj = new GenericsClass("Java Programming"); System.out.println("Generic Class returns: " + stringObj.getData()); ) ) // create a generics class class GenericsClass ( // variable of T type private T data; public GenericsClass(T data) ( this.data = data; ) // method that return T type variable public T getData() ( return this.data; ) )

आउटपुट

 सामान्य वर्ग रिटर्न: 5 सामान्य वर्ग रिटर्न: जावा प्रोग्रामिंग

उपरोक्त उदाहरण में, हमने GenericsClass नाम से एक सामान्य वर्ग बनाया है। इस वर्ग का उपयोग किसी भी प्रकार के डेटा के साथ काम करने के लिए किया जा सकता है।

 class GenericsClass (… )

यहाँ, कोण कोष्ठक के अंदर प्रयुक्त T टाइप पैरामीटर को इंगित करता है । कक्षा के अंदर , हमने GenericsClass के दो ऑब्जेक्ट बनाए हैंMain

  • intObj - यहां, टाइप पैरामीटर T को बदल दिया जाता है Integer। अब, GenericsClass पूर्णांक डेटा के साथ काम करता है।
  • stringObj - यहाँ, टाइप पैरामीटर T को बदल दिया जाता है String। अब, GenericsClass स्ट्रिंग डेटा के साथ काम करता है।

जावा जेनरिक विधि

जेनरिक क्लास की तरह ही, हम एक ऐसा तरीका भी बना सकते हैं, जिसका इस्तेमाल किसी भी तरह के डेटा के साथ किया जा सकता है। ऐसी कक्षा को जेनरिक विधि के रूप में जाना जाता है।

यहाँ हम जावा में जेनेरिक क्लास कैसे बना सकते हैं:

उदाहरण: एक जेनरिक विधि बनाएँ

 class Main ( public static void main(String() args) ( // initialize the class with Integer data DemoClass demo = new DemoClass(); // generics method working with String demo.genericsMethod("Java Programming"); // generics method working with integer demo.genericsMethod(25); ) ) class DemoClass ( // creae a generics method public void genericsMethod(T data) ( System.out.println("Generics Method:"); System.out.println("Data Passed: " + data); ) )

आउटपुट

 जेनरिक विधि: डेटा पारित: जावा प्रोग्रामिंग जेनरिक विधि: डेटा पारित: 25

उपरोक्त उदाहरण में, हमने जेनेरिकमैथोड नामक एक सामान्य विधि बनाई है।

 public void genericMethod(T data) (… )

यहां, प्रकार पैरामीटर को संशोधक के बाद publicऔर रिटर्न प्रकार से पहले डाला जाता है void

हम वास्तविक प्रकार और ब्रैकेट के अंदर विधि नाम से पहले जेनेरिक विधि कह सकते हैं ।

 demo.genericMethod("Java Programming"); demo.genericMethod(25);

नोट : हम जेनेरिक पद्धति को बिना पैरामीटर के शामिल कर सकते हैं। उदाहरण के लिए,

 demo.genericsMethod("Java Programming");

इस मामले में, संकलक विधि के लिए पारित मूल्य के आधार पर प्रकार पैरामीटर से मेल खा सकता है।

बंधे हुए प्रकार

सामान्य तौर पर, टाइप पैरामीटर किसी भी डेटा प्रकार (आदिम प्रकार को छोड़कर) को स्वीकार कर सकता है।

हालाँकि, यदि हम कुछ विशिष्ट प्रकारों (जैसे संख्या के डेटा को स्वीकार करना) के लिए जेनरिक का उपयोग करना चाहते हैं, तो हम बंधे हुए प्रकारों का उपयोग कर सकते हैं।

बाध्य प्रकारों के मामले में, हम extendsकीवर्ड का उपयोग करते हैं । उदाहरण के लिए,

 

इसका मतलब यह है कि T केवल उन डेटा को स्वीकार कर सकता है जो A के उपप्रकार हैं।

उदाहरण: बंधे हुए प्रकार

 class GenericsClass ( public void display() ( System.out.println("This is a bounded type generics class."); ) ) class Main ( public static void main(String() args) ( // create an object of GenericsClass GenericsClass obj = new GenericsClass(); ) )

उपरोक्त उदाहरण में, हमने GenericsClass नाम से एक वर्ग बनाया है। अभिव्यक्ति पर ध्यान दें, अभिव्यक्ति पर ध्यान दें

  

यहाँ, GenericsClass को बाउंड प्रकार के साथ बनाया गया है। यह साधन GenericsClass केवल डेटा प्रकार है कि के बच्चे हैं के साथ काम कर सकते हैं Number( Integer, Double, और इतने पर)।

हालाँकि, हमने जेनरिक क्लास के साथ एक ऑब्जेक्ट बनाया है String। इस मामले में, हमें निम्न त्रुटि मिलेगी।

GenericsClass obj = new GenericsClass (); कारण: इंफ़ेक्शन वेरिएबल T में असंगत सीमाएँ समता बाधाएँ हैं: स्ट्रिंग निम्न सीमाएँ: संख्या जहाँ T एक प्रकार-चर है: T कक्षा में घोषित संख्या का विस्तार करती है GenericsClass

जावा पीढ़ी के लाभ

1. कोड पुन: प्रयोज्यता

जावा में जेनेरिक की मदद से, हम कोड लिख सकते हैं जो विभिन्न प्रकार के डेटा के साथ काम करेगा। उदाहरण के लिए,

 public void genericsMethod(T data) (… )

यहां, हमने एक जेनेरिक विधि बनाई है। इसी विधि का उपयोग पूर्णांक डेटा, स्ट्रिंग डेटा और इसी तरह के कार्यों को करने के लिए किया जा सकता है।

2. संकलन-समय प्रकार की जाँच

जेनरिक का प्रकार पैरामीटर जेनरिक कोड में उपयोग किए जाने वाले डेटा के प्रकार के बारे में जानकारी प्रदान करता है। उदाहरण के लिए,

 // using Generics GenericsClass list = new GenericsClass();

यहां, हम जानते हैं कि GenericsClass Integerकेवल डेटा के साथ काम कर रहा है ।

अब, यदि हम इस वर्ग के लिए पूर्णांक के अलावा अन्य डेटा पास करने का प्रयास करते हैं, तो प्रोग्राम संकलन समय पर एक त्रुटि उत्पन्न करेगा।

3. संग्रह के साथ प्रयोग किया जाता है

संग्रह की रूपरेखा जावा में जेनरिक की अवधारणा का उपयोग करती है। उदाहरण के लिए,

 // creating a string type ArrayList ArrayList list1 = new ArrayList(); // creating a integer type ArrayList ArrayList list2 = new ArrayList();

उपरोक्त उदाहरण में, हमने विभिन्न प्रकार के डेटा के साथ काम करने के लिए एक ही ArrayList वर्ग का उपयोग किया है।

की ही तरह ArrayList, अन्य संग्रह ( LinkedList, Queue, Maps, और इतने पर) भी जावा में सामान्य हैं।

दिलचस्प लेख...