Sangat sederhana. Ini adalah fitur baru yang diperkenalkan di J2SE 5 . Menentukan tanda kurung siku setelah nama kelas berarti Anda membuat tipe data sementara yang dapat menampung semua jenis data.
Contoh:
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);
}
}
Alih-alih <T>, Anda benar-benar dapat menulis apa saja dan itu akan bekerja dengan cara yang sama. Cobalah menulis <ABC>di tempat <T>.
Ini hanya untuk kenyamanan:
<T> disebut sebagai tipe apapun
<E> sebagai tipe elemen
<N> sebagai tipe nomor
<V> sebagai nilai
<K> sebagai kunci
Tetapi Anda dapat menamainya apa pun yang Anda inginkan, itu tidak terlalu penting.
Selain itu, Integer, String, Booleandll adalah kelas wrapper Jawa yang membantu dalam memeriksa jenis selama kompilasi. Misalnya, dalam kode di atas, objadalah tipe String, jadi Anda tidak dapat menambahkan tipe lain ke dalamnya (coba obj.add(1), itu akan memunculkan kesalahan). Demikian pula, obj1adalah dari Integertipenya, Anda tidak dapat menambahkan tipe lain ke dalamnya (coba obj1.add("hello"), kesalahan akan ada).
T createObjectseharusnya berada di dalam Pool atau PoolFactory? Dimanathis.freeObjects = ...seharusnya? Apakah itu contoh terpisah? Dilarang menyimpannya di sana; itu harus di dalam metode.