Pessoal,
Tenho o seguinte cenário :
public interface BaseDao<T> { ... }
public abstract class BaseDaoImpl<T> implements BaseDao<T> {
public BaseDaoImpl() {
this.persistentClass = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
public T recuperar( Serializable id ) {
return (T)this.hibernateTemplate.get(persistentClass, id);
}
}
public abstract class AbstractFuncionarioDao<T> extends BaseDaoImpl<T> { ... }
public class FuncionarioDaoImpl extends AbstractFuncionarioDao<Funcionario> { ... }
public class Funcionario implements Serializable { ... }
Qdo eu efetuo a chamada do método recuperar da classe BaseDaoImpl através da minha classe de serviço :
public class ControlarFuncionarioServiceImpl implements IControlarFuncionarioService {
private AbstractFuncionarioDao dao;
/**
* Construtor default do objeto ControlarFuncionarioServiceImpl
* @param dao
* @spring.constructor-arg ref="funcionarioDao"
*/
public ControlarFuncionarioServiceImpl( AbstractFuncionarioDao dao ) {
this.dao = dao;
}
public Funcionario recuperar(Long id) {
return dao.recuperar(id);
}
}
… Está sendo gerado um erro de compilação solicitando cast de Object para Funcionario.
Usando generics isso não deveria acontecer né ?!?
Alguém sabe como eu posso resolver este problema ? Sem dar o cast ?
Obrigado;