sapulha
Eu uso da seguinte forma:
class GenericDao<MyBean extends Bean> {
public List<MyBean> get(Clazz<?> clazzBean) {
return null; // Aqui faz a consulta e retorna um List<? extends Bean>.
}
}
E depois uso da seguinte forma:
GeneriDAO<TbPessoaBean> generiDAO = new GenericDAO<TbPessoaBean>();
List<TbPessoaBean> list = genericDao.get(TbPessoaBean.class);
Dessa forma não preciso usar o Cast
victorwss
Tenta isso:
class GenericDao {
public <E extends Bean> List<E> get(Class<E> clazzBean) {
return null; // Aqui faz a consulta e retorna um List<E>.
}
}
leandro.anjos
Só pra completar, eu aconselho a utilizar a forma do sapulha. Mas pra ficar mais generico ficaria assim:
class GenericDao<T extends Bean> {
private Class<T> persistentClass;
public GenericDao() {
this.persistentClass = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
public List<T> listarTudo() {
return getSession().createCriteria(this.persistentClass).list();
}
}
OBS: Os meus beans sempre EXTENDERAM o Bean, ou AbstractBean ou AbstractVO, nunca IMPLEMENTARAM, esse também pode ser o problema.