doLearn(“Generics”,1);

Ketika Sun me-release Java 5.0 aka Tiger, banyak terdapat fitur2 baru, ada yang menarik, akan tetapi ada juga yang menurut saya tidak perlu, salah satu fitur yang tidak perlu itu adalah generics. Cukup hanya dengan melihat syntax-nya saja, mampu membuat saya dengan seketika membenci generics

Ada pepatah mengatakan Tidak kenal, maka tidak sayang, maka selagi ada waktu senggang, saya mencoba untuk mengoprek dan memahami generics

Generic dibuat agar para programmer java, tidak perlu melakukan casting, sewaktu mengambil object dari sebuah collection

   /**
   * print kumpulan String dalam list.
   **/
   public void printStringCollection(List list){
      String sTemp = null;
      for(int idx=0;id < list.size();idx++){
        sTemp = (String) list.get(idx);
      }
   }

seperti diliat dari code diatas, kita harus terlebih dahulu melakukan casting, dan tentu saja ada kemungkinan kita salah dalam melakukan casting dan mengakibatkan Exception sewaktu run-time. Hal ini lah yang mengakibatkan Sun memperkenalkan generics. mari kita liat bagaimana kode diatas diganti dengan menggunakan generic

  public void printStringCollection(List list){
     for(String s: list){
        System.out.println(s);
     }
     //atau dapat juga
     //String s = null;
     //for(int idx=0;idx<list.size();idx++){
     // s = list.get(i); //see without casting.
     //}
  }

Woaaaa, cooollll, what’s that with “for-in”, yup2 selain generics Tiger juga memperkenalkan jenis baru dari untuk pelengkap for-loop dengan menggunakan for-in, Akan tetapi yang paling penting adalah, kita tidak perlu menggunakan casting sewaktu berhubungan dengan collection

Diliat dari code diatas sepertinya generics tidak terlalu susah, yang penting hanya menambah “” setelah keyword collection.
is it worthed?, mungkin, hmm.. tapi setelah ini ternyata masih banyak detail2 dari generic yang harus dipelajadi seperti, extends,super, wildcards, nah kalo diliat dari tambahan hal2 yang harus dipelajari sepertinya generics hanya akan menambah tingkat kerumitan java, yang menurut saya sangat tidak perlu. Hmm… mungkin saya harus mempelajari lebih dalam lagi tentang generics,sebelum memutuskan bahwa generics memang tidak perlu :O

Ada satu hal tambahan mengenai generics, apakah dengan segala macam2 pernak pernik ini, membuat bytecode java 5.0 berbeda? ternyata tidak, generic pada java bersifat erasure, mungkin dari kata erase, jadi sewaktu compile, segala pernah-pernik tentang genericsdibuang, sehingga pada akhirnya bytecode dari java 5.0 ttp sama dengan pre-5.0

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: