ग्रूवी - जेनरिक

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

संग्रह के लिए सामान्य

सूची वर्ग जैसे संग्रह वर्गों को सामान्यीकृत किया जा सकता है ताकि आवेदन में केवल उस प्रकार के संग्रह स्वीकार किए जाएं। सामान्यीकृत ArrayList का एक उदाहरण नीचे दिखाया गया है। निम्नलिखित कथन क्या है कि यह केवल सूची आइटम को स्वीकार करता है जो कि प्रकार स्ट्रिंग के हैं -

List<String> list = new ArrayList<String>();

निम्नलिखित कोड उदाहरण में, हम निम्नलिखित कर रहे हैं -

  • एक सामान्यीकृत ArrayList संग्रह बनाना जो केवल स्ट्रिंग्स को धारण करेगा।
  • सूची में 3 तार जोड़ें।
  • सूची में प्रत्येक आइटम के लिए, स्ट्रिंग्स के मूल्य को प्रिंट करना।
class Example {
   static void main(String[] args) {
      // Creating a generic List collection
      List<String> list = new ArrayList<String>();
      list.add("First String");
      list.add("Second String");
      list.add("Third String");
		
      for(String str : list) {
         println(str);
      }
   } 
}

उपरोक्त कार्यक्रम का उत्पादन होगा -

First String 
Second String 
Third String

सामान्यीकृत कक्षाएं

पूरे वर्ग को भी सामान्यीकृत किया जा सकता है। यह वर्ग को किसी भी प्रकार को स्वीकार करने और उन प्रकारों के अनुसार काम करने में अधिक लचीला बनाता है। आइए एक उदाहरण देखें कि हम इसे कैसे पूरा कर सकते हैं।

निम्नलिखित कार्यक्रम में, हम निम्नलिखित कदम उठा रहे हैं -

  • हम ListType नामक एक क्लास बना रहे हैं। वर्ग परिभाषा के सामने रखे गए <T> कीवर्ड पर ध्यान दें। यह संकलक को बताता है कि यह वर्ग किसी भी प्रकार को स्वीकार कर सकता है। इसलिए जब हम इस वर्ग की एक वस्तु की घोषणा करते हैं, तो हम घोषणा के दौरान एक प्रकार निर्दिष्ट कर सकते हैं और उस प्रकार को प्लेसहोल्डर / टी> में बदल दिया जाएगा।

  • सामान्य वर्ग में कक्षा में परिभाषित सदस्य चर के साथ काम करने के लिए सरल गेट्टर और सेटर विधियां हैं।

  • मुख्य कार्यक्रम में, ध्यान दें कि हम ListType वर्ग की वस्तुओं को घोषित करने में सक्षम हैं, लेकिन विभिन्न प्रकारों के। पहला एक प्रकार का पूर्णांक है और दूसरा प्रकार स्ट्रिंग का है।

class Example {
   static void main(String[] args) {
      // Creating a generic List collection 
      ListType<String> lststr = new ListType<>();
      lststr.set("First String");
      println(lststr.get()); 
		
      ListType<Integer> lstint = new ListType<>();
      lstint.set(1);
      println(lstint.get());
   }
} 

public class ListType<T> {
   private T localt;
	
   public T get() {
      return this.localt;
   }
	
   public void set(T plocal) {
      this.localt = plocal;
   } 
}

उपरोक्त कार्यक्रम का उत्पादन होगा -

First String 
1