Btw, istilah type casting atau type saving itu apa yaa? Bingung ama istilah2 beginian
Gardiary Rukhiat http://gardiary.wordpress.com/ --- On Tue, 10/21/08, Arif Rachim <[EMAIL PROTECTED]> wrote: From: Arif Rachim <[EMAIL PROTECTED]> Subject: Re: [JUG-Indonesia] Bagaimana mencegah "Erasure" pada Generic ? To: jug-indonesia@yahoogroups.com Date: Tuesday, October 21, 2008, 6:00 AM Pertanyaan yg sangat bagus :) Kalau sekedar buat menghilangkan type casting bisa tempatin generic di level method public class Sample { public static void main(){ System.out.println( Bo.haloBow( )); } static class Bo{ public static <T> T haloBow(){ return (T) "Hallow"; } } } Nah ini bisa kita manfaatkan jadi cikal bakal teknik yg saya sebut fishing :). Coba cek DAO SAMPAH ini http://www.hibernat e.org/328. html Teknik ini juga bisa saya bilang SAMPAH !!! http://www.ibm. com/developerwor ks/java/library/ j-genericdao. html Mereka coba implementasiin generic dao, tapi karena kena ERRASURE, mereka akalin dengan extend DAO tersebut dan cara mengambil parameternya menggunakan (Class<T>) ((ParameterizedType ) getClass().getGener icSuperclass( )).getActualType Arguments( )[0]; AUCCHHH bener2 teknik sampah. Sebenernya kita bisa pakai cara lain untuk tetap bisa mendapatkan Type save dan mendapatkan data type dari generic tersebut tanpa kehilangan the power of type saving. Saya belum tau di internet istilah pattern ini apa ? Tapi kalau boleh saya namakan the Fishing Pattern. hahahahahaha. cek code berikut public class DAO<T> { private Class<T> clazz; public DAO(Class<T> clazz){ this.clazz = clazz; } public T persist(T t){ // get the type here and do something with JPA return t; } public static <T> DAO<T> newInstance( Class<T> clazz){ return new DAO<T>(clazz) ; } } Nah kelebihan dari cara diatas, pada saat instantiate di saat runtime, kita tetep dapat menyimpan type dari dao kita public static void main(String [] args){ DAO<Balance> daoBal = DAO.newInstance( Balance.class) ; daoBal.persist( new Balance()); } Tak ada type casting, type save bisa dijamin, contohnya kalau kita passing class selain Balance class tentu akan compilation error sebab DAO typena Balance, dan type class bisa dibaca di runtime. BWAHAHAHAHAHAHA. Best Regards, 2008/10/20 Dedy Alamsyah <[EMAIL PROTECTED] com>: > Dear All Master ! > > Kalau ketemu kasus Erasure gimana cara solvenya yah ? > > thank in advance ! >