2011-03-03

Generic method

為了寫共用的 dao,有了 generic method 的需求。

以前的作法:
@Override
public BaseModel getEntity(Class<? extends BaseModel> clazz, Long id) {
    EntityManager em = EMF.get().createEntityManager();
    BaseModel obj = em.find(clazz, id);
    em.close();
    return obj;
}
缺點是呼叫完 getEnity(...) 之後還要 cast 成想要的型別。
突然想到,研究了一下 ArrayList<E>,得到想要的作法,這樣就不用再 cast 了。
@Override
public <T> T getEntity(Class<T> clazz, Long id) {
    EntityManager em = EMF.get().createEntityManager();
    T obj = em.find(clazz, id);
    em.close();
    return obj;
}

沒有留言:

張貼留言