हम इस ट्यूटोरियल में सीखने वाले है कि जावा जेनेरिक्स (Java Generics in Hindi) और हम इसे कैसे इस्तमाल कर सकते हैं? यह अच्छा होगा अगर हम एक एकल प्रकार की विधि लिख सकें जो तत्वों को एक पूर्णांक सरणी, एक स्ट्रिंग सरणी, या ऑर्डरिंग का समर्थन करने वाले किसी भी प्रकार की सरणी में सॉर्ट कर सके।
Java Generic Methods और Generic Classes प्रोग्रामर को क्रमशः एकल विधि घोषणा, संबंधित विधियों का एक set, या एकल वर्ग घोषणा के साथ संबंधित प्रकारों का एक set निर्दिष्ट करने में सक्षम बनाती हैं।
जेनरिक संकलन-समय प्रकार की सुरक्षा भी प्रदान करते हैं जो प्रोग्रामर को संकलन समय पर अमान्य प्रकारों को पकड़ने की अनुमति देता है।
Table of Contents
जावा जेनेरिक अवधारणा का उपयोग करके, हम ऑब्जेक्ट्स की सरणी को सॉर्ट करने के लिए एक सामान्य विधि लिख सकते हैं, फिर सरणी तत्वों को सॉर्ट करने के लिए इंटीजर सरणी, डबल सरणी, स्ट्रिंग सरणी आदि के साथ जेनेरिक विधि का आह्वान कर सकते हैं।
सामान्य तरीके (Generic Methods in Hindi)
आप एक सामान्य विधि घोषणा लिख सकते हैं जिसे विभिन्न प्रकार के arguments के साथ बुलाया जा सकता है। जेनेरिक विधि को दिए गए arguments के प्रकारों के आधार पर, कंपाइलर प्रत्येक विधि कॉल को उचित रूप से संभालता है। सामान्य विधियों को परिभाषित करने के नियम निम्नलिखित हैं –
सभी सामान्य विधि घोषणाओं में कोण कोष्ठक (<और>) द्वारा सीमांकित एक प्रकार का पैरामीटर अनुभाग होता है जो विधि के रिटर्न प्रकार (<E> अगले उदाहरण में) से पहले होता है।
प्रत्येक प्रकार के पैरामीटर अनुभाग में commas द्वारा अलग किए गए एक या अधिक प्रकार के पैरामीटर होते हैं। एक प्रकार का पैरामीटर, जिसे एक प्रकार चर के रूप में भी जाना जाता है, एक पहचानकर्ता है जो एक सामान्य प्रकार का नाम निर्दिष्ट करता है।
प्रकार के मापदंडों का उपयोग रिटर्न प्रकार की घोषणा करने के लिए किया जा सकता है और जेनेरिक विधि को दिए गए arguments के प्रकारों के लिए प्लेसहोल्डर्स के रूप में कार्य करता है, जिन्हें वास्तविक प्रकार के arguments के रूप में जाना जाता है।
एक सामान्य विधि का शरीर किसी अन्य विधि की तरह घोषित किया जाता है। ध्यान दें कि टाइप पैरामीटर केवल संदर्भ प्रकारों का प्रतिनिधित्व कर सकते हैं, आदिम प्रकारों का नहीं (जैसे int, double और char)।
उदाहरण
निम्नलिखित उदाहरण दिखाता है कि हम एक सामान्य विधि का उपयोग करके विभिन्न प्रकार की सरणी कैसे प्रिंट कर सकते हैं –
public class GenericMethodTest {
// सामान्य विधि PrintArray
public static < E > void printArray( E[] inputArray ) {
// Display array elements
for(E element : inputArray) {
System.out.printf(“%s “, element);
}
System.out.println();
}
public static void main(String args[]) {
// इंटेगर, डबल और कैरेक्टर की सरणियाँ बनाएँ
Integer[] intArray = { 1, 2, 3, 4, 5 };
Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
Character[] charArray = { ‘H’, ‘E’, ‘L’, ‘L’, ‘O’ };
System.out.println(“Array integerArray contains:”);
printArray(intArray); // pass an Integer array
System.out.println(“\nArray doubleArray contains:”);
printArray(doubleArray); // pass a Double array
System.out.println(“\nArray characterArray contains:”);
printArray(charArray); // pass a Character array
}
}
यह निम्नलिखित परिणाम देगा –
Output
Array integerArray contains:
1 2 3 4 5
Array doubleArray contains:
1.1 2.2 3.3 4.4
Array characterArray contains:
H E L L O
बंधे हुए प्रकार के पैरामीटर (Bounded Type Parameters in Hindi)
ऐसे समय हो सकते हैं जब आप उन प्रकारों को प्रतिबंधित करना चाहेंगे जिन्हें किसी प्रकार के पैरामीटर में पारित करने की अनुमति है। उदाहरण के लिए, एक विधि जो संख्याओं पर काम करती है वह केवल संख्या या उसके उपवर्गों के उदाहरणों को स्वीकार करना चाहेगी। यह वही है जिसके लिए bounded टाइप पैरामीटर हैं।
एक बाउंड टाइप पैरामीटर घोषित करने के लिए, टाइप पैरामीटर का नाम सूचीबद्ध करें, इसके बाद एक्सटेंडेड कीवर्ड और उसके बाद इसकी ऊपरी सीमा।
उदाहरण
निम्नलिखित उदाहरण दिखाता है कि कैसे विस्तार का उपयोग सामान्य अर्थ में या तो “विस्तार” (कक्षाओं में) या “कार्यान्वयन” (इंटरफेस के रूप में) के अर्थ में किया जाता है। यह उदाहरण तीन तुलनात्मक वस्तुओं में से सबसे बड़ा लौटाने की सामान्य विधि है –
public class MaximumTest {
// तीन तुलनीय वस्तुओं में से सबसे बड़ा निर्धारित करता है
public static <T extends Comparable<T>> T maximum(T x, T y, T z) {
T max = x; // assume x is initially the largest
if(y.compareTo(max) > 0) {
max = y; // y अब तक का सबसे बड़ा है
}
if(z.compareTo(max) > 0) {
max = z; // z अब सबसे बड़ा है
}
return max; // सबसे बड़ी object लौटाता है
}
public static void main(String args[]) {
System.out.printf(“Max of %d, %d and %d is %d\n\n”,
3, 4, 5, maximum( 3, 4, 5 ));
System.out.printf(“Max of %.1f,%.1f and %.1f is %.1f\n\n”,
6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ));
System.out.printf(“Max of %s, %s and %s is %s\n”,”pear”,
“apple”, “orange”, maximum(“pear”, “apple”, “orange”));
}
}
यह निम्नलिखित परिणाम देगा –
Output
Max of 3, 4 and 5 is 5
Max of 6.6,8.8 and 7.7 is 8.8
Max of pear, apple and orange is pear
सामान्य वर्ग (Generic Classes in Hindi)
एक सामान्य वर्ग घोषणा एक गैर-सामान्य वर्ग घोषणा की तरह दिखती है, सिवाय इसके कि वर्ग का नाम एक प्रकार पैरामीटर अनुभाग के बाद होता है।
सामान्य तरीकों की तरह, सामान्य वर्ग के प्रकार पैरामीटर अनुभाग में commas द्वारा अलग किए गए एक या अधिक प्रकार के पैरामीटर हो सकते हैं। इन वर्गों को पैरामीटरयुक्त वर्ग या पैरामीटरयुक्त प्रकार के रूप में जाना जाता है क्योंकि वे एक या अधिक पैरामीटर स्वीकार करते हैं।
उदाहरण
निम्नलिखित उदाहरण दिखाता है कि हम एक सामान्य वर्ग को कैसे परिभाषित कर सकते हैं –
public class Box<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
Box<String> stringBox = new Box<String>();
integerBox.add(new Integer(10));
stringBox.add(new String(“Hello World”));
System.out.printf(“Integer Value :%d\n\n”, integerBox.get());
System.out.printf(“String Value :%s\n”, stringBox.get());
}
}
यह निम्नलिखित परिणाम देगा –
Output
Integer Value :10
String Value :Hello World
हम उम्मीद करते है कि आपको “जावा जेनेरिक्स (Java Generics in Hindi)” से सम्बंधित जानकारी हिंदी में समझ में आयी होंगी यदि आपको बताई गई जानकारी अच्छी लगी हो तो अपने दोस्तों में ऐसे शेयर करे जिससे उनकी भी हेल्प हो सके धन्यवाद!