এটা সত্যিই সহজ। এটি 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)
, এটি একটি ত্রুটি castালবে)। একইভাবে, obj1
হয় Integer
টাইপ, আপনি এটি (চেষ্টা অন্য কোন প্রকার যোগ করতে পারবেন না obj1.add("hello")
, ত্রুটি থাকবে)।
T createObject
পুল বা PoolFactory ভিতরে হতে অনুমিত? কোথায় থাকারthis.freeObjects = ...
কথা? এটা কি আলাদা উদাহরণ? এটি সেখানে থাকা অবৈধ; এটি একটি পদ্ধতির ভিতরে থাকতে হবে।