Membro desde: 30/09/2006 09:38:16
Mensagens: 70
Localização: Campo Grande - MS
Offline
Tenho o seguinte trecho de código, baseado neste exemplo, estou tentando pegar a classe do parâmetro T:
Está me retornando o erro:
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
Utilizo o java 6. Por que esse problema com o cast? Existe alguma outra forma para descobrir qual a classe T, ou preciso passá-la como parâmetro adicional no construtor?
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
a) Você tem um problema de parênteses
O que você fez:
((ParameterizedType) getClass()
.getGenericSuperclass())
O que deveria ser:
((ParameterizedType) (getClass()
.getGenericSuperclass()))
b) Poste a definição completa da sua classe. Ela é class Dao<T> ou outra coisa?
Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline
Não há como "descobrir a classe T" pois o compilador não leva essa informação para o bytecode. O Generics é um recurso de compilação e não de runtime. Veja este tópico: http://www.guj.com.br/posts/list/122984.java
This message was edited 1 time. Last update was at 12/04/2009 16:03:52