Genericos

3 respostas
jfnando
Olá a todos!

Gostaria de saber se tem como eu pegar o nome da classe no meu generico. Exemplo:

public class NomeClasse<G> {

}

public class NomeOutraCasse extends NomeClasse<Cliente> {
}

quero saber na classe NomeClasse qual o tipo do meu generico, quero saber se <G> é uma classe Cliente.

Desde já obrigado.

3 Respostas

marcelo_mococa

não fique triste, mas você não vai conseguir esta proeza…

generics existe apenas em tempo de compilação, ou seja, quando é gerado o bytecode ele desaparece. Tudo isso pra manter a compatibilidade com antigas versões do java.

Resumindo, em tempo de execução você não conseguirá descobrir o que está entre os < > da sua classe ‘genérica’.

mchiareli

vc consegue com o metodo getGenericType() da classe Field retornar algo como:

java.util.ArrayList<java.lang.String>

mas pegar somente o tipo String não tem como, da uma olhada como fazer o tipo acima, para vc ter uma ideia.

import java.lang.reflect.Field;
import java.util.ArrayList;

public class Generic {
	private ArrayList<String> list = new ArrayList<String>();
	
	public static void main(String[] args) throws Exception {
		
		
		Field field = Generic.class.getDeclaredField("list");
		
		System.out.println(field.getGenericType());

	}

}
jfnando

Valeu galera!
Eu imaginei mesmo que não tinha como fazer isso. Não tava encontrando nada mesmo sobre isso.
Vou tentar usar dessa forma mchiareli, pegar dessa String oq eu preciso.

Obrigado a todos!
Valeu

Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 3
Participantes 3