Erro com Generics  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
genildof
Debugger
[Avatar]

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?

Grato por sua ajuda,,

/genildof.
[WWW] [MSN]
thingol
Moderador

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?
[WWW]
genildof
Debugger
[Avatar]

Membro desde: 30/09/2006 09:38:16
Mensagens: 70
Localização: Campo Grande - MS
Offline

Olá Thingol,
Fiz a alteração nos parênteses, ocorre o mesmo erro (linha 21).
Classe Dao<T>:

/genildof.
[WWW] [MSN]
juarezna
Thread.start()
[Avatar]

Membro desde: 26/12/2006 19:36:35
Mensagens: 42
Offline

Olá a todos!

Esse problema foi resolvido? Estou com o mesmo problema...

genildof
Debugger
[Avatar]

Membro desde: 30/09/2006 09:38:16
Mensagens: 70
Localização: Campo Grande - MS
Offline

Esse artigo do Paulo Silveira esclarece o assunto: http://blog.caelum.com.br/2008/04/28/nao-posso-descobrir-nem-instanciar-tipos-genericos-porque/. Nesse outro post é mencionada uma possível solução: http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/.
Eu optei por passar a classe como parâmetro no construtor do Dao genérico.

Gf.

/genildof.
[WWW] [MSN]
juarezna
Thread.start()
[Avatar]

Membro desde: 26/12/2006 19:36:35
Mensagens: 42
Offline

genildof wrote:Esse artigo do Paulo Silveira esclarece o assunto: http://blog.caelum.com.br/2008/04/28/nao-posso-descobrir-nem-instanciar-tipos-genericos-porque/. Nesse outro post é mencionada uma possível solução: http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/.
Eu optei por passar a classe como parâmetro no construtor do Dao genérico.

Gf.


Valeu!!!! Essa dica foi muito importante.
Obrigado
[]s
renatosilva
GUJ Master

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

 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team