Utilização da API Reflect com tipos genericos

4 respostas
bonfarj

O sistema que eu estou desenvolvendo precisa pegar alguns objetos que ficam guardados na sessão. Eu criei o seguinte método para recuperá-los:

public static <T> T pegaObjetoSessao(HttpServletRequest request, String nomeAtributo, Class<T> classeCast) {
	
	Object objeto = request.getSession().getAttribute(nomeAtributo);
	T objetoCasteado = classeCast.cast(objeto); 
	
	return objetoCasteado;
}

Eu decidi criar um método pois quando o cast é para lista tipadas eu recebo um warning. A minha idéia era centralizar essa operação para receber apenas um warning, pois se não consigo eliminá-lo, ao menos reduzo o número de incidências para um. O problema é que não sei como expressar isso. Por exemplo, se quero passar para o método uma classe Aluno, eu passo Aluno.class. Mas se quiser passar uma lista de Alunos? Tentei List.class, mas não dá. :(

Alguém sabe?

abraços!

4 Respostas

mchiareli

vc nao consegue saber o tipo generica da coleção isso eh perdido depois que vira bytecode…

logo vc nao consegue fazer

lista.getGeneric();

vc sabe que eh um arraylist

mas nao sabe que eh um arraylist

bonfarj

Caramba, que frustração… isso seria útil demais… :frowning:
Estou triste, hehehe… mas valeu pela informação!

abraços,

ddduran

Bonfa para tirar os warnnins que você falou basta usar a anotação

@SuppressWarnings

no seu caso
@SuppressWarnings(“unchecked”)
não precisa implementar esse metodo, se seu problema for só evitar os warnings

embora se você faz esse tipo de operação varias vezes então é sábio centraliza-lo em um metodo

[]s

bonfarj

O que eu quero é justamente evitar essa anotação. E vou fazer isso mesmo que você falou, centralizar em um método. :slight_smile:

abraços!

Criado 13 de agosto de 2007
Ultima resposta 13 de ago. de 2007
Respostas 4
Participantes 3