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
, Boolean
dll adalah kelas wrapper Jawa yang membantu dalam memeriksa jenis selama kompilasi. Misalnya, dalam kode di atas, obj
adalah tipe String
, jadi Anda tidak dapat menambahkan tipe lain ke dalamnya (coba obj.add(1)
, itu akan memunculkan kesalahan). Demikian pula, obj1
adalah dari Integer
tipenya, Anda tidak dapat menambahkan tipe lain ke dalamnya (coba obj1.add("hello")
, kesalahan akan ada).
T createObject
seharusnya berada di dalam Pool atau PoolFactory? Dimanathis.freeObjects = ...
seharusnya? Apakah itu contoh terpisah? Dilarang menyimpannya di sana; itu harus di dalam metode.