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 !

> 


      

    
    
        
         
        
        








        


        
        


      

Kirim email ke