Recuperar tipo generics

3 respostas
O

Tou tentando retornar o tipo generics passado para a classe… segue o exemplo abaixo…

Uma entidade

public class Entity implements Serializable {
	
	private static final long serialVersionUID = -115830062740022515L;
	public long id;
	public boolean valido = true;

interface do dao

public interface Dao<T extends Entity> {
}

implementação do dao

public class DaoImpl<T extends Entity> implements Dao<T> {

	private Class<T> reflectionObject;
	private Session session;

	@SuppressWarnings("unchecked")
	public DaoImpl() {
		this.reflectionObject = (Class<T>) ((ParameterizedType) getClass()
				.getGenericSuperclass()).getActualTypeArguments()[0];
		System.out.println("..");
		
	}
}

e essa parte do código sempre retorna um java.lang.Object, ou seja quando tento fazer cast para ParameterizedType ocorre uma exceção.

getClass().getGenericSuperclass()

3 Respostas

O

ninguem :?: :?:

peczenyj

O tipo generico T (ou seja la q letra vc der) vai ser apagado (erasure) no final da compilação.

De uma olhada via javap no .class gerado.

O

O uso é em tempo de compilação, mas não tem como recuperar em tempo de execução?

Criado 19 de maio de 2009
Ultima resposta 20 de mai. de 2009
Respostas 3
Participantes 2