यह वास्तव में सरल है। यह J2SE 5 में पेश किया गया एक नया फीचर है । वर्ग नाम के बाद कोणीय कोष्ठक निर्दिष्ट करने का मतलब है कि आप एक अस्थायी डेटा प्रकार बना रहे हैं जो किसी भी प्रकार के डेटा को पकड़ सकता है।
उदाहरण:
class A<T>{
T obj;
void add(T obj){
this.obj=obj;
}
T get(){
return obj;
}
}
public class generics {
static<E> void print(E[] elements){
for(E element:elements){
System.out.println(element);
}
}
public static void main(String[] args) {
A<String> obj=new A<String>();
A<Integer> obj1=new A<Integer>();
obj.add("hello");
obj1.add(6);
System.out.println(obj.get());
System.out.println(obj1.get());
Integer[] arr={1,3,5,7};
print(arr);
}
}
इसके बजाय <T>
, आप वास्तव में कुछ भी लिख सकते हैं और यह उसी तरह काम करेगा। के <ABC>
स्थान पर लिखने का प्रयास करें <T>
।
यह सिर्फ सुविधा के लिए है:
<T>
किसी भी प्रकार के रूप में जाना जाता है
<E>
तत्व प्रकार के रूप में
<N>
संख्या प्रकार के रूप में
<V>
मान के रूप में
<K>
कुंजी के रूप में
लेकिन आप इसे अपनी इच्छानुसार कुछ भी नाम दे सकते हैं, यह वास्तव में मायने नहीं रखता।
इसके अलावा, Integer
, String
, Boolean
आदि जावा जो संकलन के दौरान प्रकार के जाँच में मदद की आवरण वर्ग हैं। उदाहरण के लिए, उपरोक्त कोड में, obj
प्रकार का है String
, इसलिए आप इसमें कोई अन्य प्रकार नहीं जोड़ सकते हैं (कोशिश करें obj.add(1)
, यह एक त्रुटि डालेगा)। इसी तरह, obj1
की है Integer
प्रकार, आप इसे (कोशिश करने के लिए किसी भी अन्य प्रकार नहीं जोड़ सकते obj1.add("hello")
, त्रुटि हो जाएगा)।
T createObject
पूल या पूलफैक्ट्री के अंदर होना चाहिए? कहाँthis.freeObjects = ...
माना जाता है क्या यह एक अलग उदाहरण है? इसे वहां रखना अवैध है; इसे एक विधि के अंदर होना चाहिए।