Usar em @SuppressWarningsqualquer lugar, conforme sugerido, é uma boa maneira de fazer isso, embora envolva digitar um pouco o dedo cada vez que você ligar q.list().
Existem duas outras técnicas que eu sugiro:
Escreva um elenco auxiliar
Simplesmente refatore tudo @SuppressWarningsem um só lugar:
List<Cat> cats = MyHibernateUtils.listAndCast(q);
...
public static <T> List<T> listAndCast(Query q) {
@SuppressWarnings("unchecked")
List list = q.list();
return list;
}
Impedir que o Eclipse gere avisos para problemas inevitáveis
No Eclipse, vá para Janela> Preferências> Java> Compilador> Erros / Avisos e em Tipo genérico, selecione a caixa de seleção
Ignore unavoidable generic type problems due to raw APIs
Isso desativará avisos desnecessários para problemas semelhantes, como o descrito acima, que são inevitáveis.
Alguns comentários:
- Eu escolhi passar no em
Queryvez do resultado de q.list()porque dessa forma este método de "trapaça" só pode ser usado para trapacear com o Hibernate, e não para trapacear Listem geral.
- Você pode adicionar métodos semelhantes para
.iterate()etc.