Referenciando Genéricos dinamicamente...  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
nicholas.bittencourt
JavaTeenager
[Avatar]

Membro desde: 17/01/2007 00:17:42
Mensagens: 161
Localização: Niterói, RJ, Brasil
Offline

Pessoal,

Estou criando uma classe ObjectHelper para realizar as operações basicas em cima de um objeto, como compare, hash e toString, usando genéricos e annotations. Meu problema acontece quando tenho que descobrir dinamicamente a Classe que o Helper se refere quando ele é criado dinamicamente... Deixa eu explicar.

Se eu extendo o ObjectHelper pra uma classe especifica da forma abaixo

eu consigo pegar a classe pessoa usando o codigo


O problema dessa implementação é que só funciona com herança e por isso eu teria que criar uma classe para cada entidade do meu sistema. A minha ideia é criar os Helpers dinamicamente como fazemos com as Collections...


Nesse caso acima, como eu não estou extendendo nenhuma classe, nao consigo descrobrir a classe que meu Generico esta referenciado. Alguem tem alguma sugestão?

--
Nicholas Dacal A. Bittencourt
http://goronah.blog.br

We also realized that solving everyone?s problems was too big of a challenge for the first release. It would be better to build a product that a lot of people love, than one that everyone tolerates (...) - Paul Buchheit, Gmail Engineer
[WWW] [MSN]
kaoe
JavaChild
[Avatar]

Membro desde: 02/02/2005 20:19:45
Mensagens: 125
Offline



Se estou correto pelo que li de genéricos não tem como mais você pode colocar no construtor do seu helper um parametro com o Class que ele é feito.

algo como:

[MSN] [ICQ]
nicholas.bittencourt
JavaTeenager
[Avatar]

Membro desde: 17/01/2007 00:17:42
Mensagens: 161
Localização: Niterói, RJ, Brasil
Offline

Mas ai você concorda que estou criando uma redundância de parêmetros, né? Já crio a classe como Genérico pro usuario não ter esse tipo de problema e ele ainda precisa passar um parâmetro repetido... :/

O pior é que talvez essa seja a unica solução.

--
Nicholas Dacal A. Bittencourt
http://goronah.blog.br

We also realized that solving everyone?s problems was too big of a challenge for the first release. It would be better to build a product that a lot of people love, than one that everyone tolerates (...) - Paul Buchheit, Gmail Engineer
[WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Se você tiver a paciência de ler o FAQ de Genéricos da Angelika Langer ( http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html ), deve encontrar uma resposta a suas perguntas.
[WWW]
nicholas.bittencourt
JavaTeenager
[Avatar]

Membro desde: 17/01/2007 00:17:42
Mensagens: 161
Localização: Niterói, RJ, Brasil
Offline

Realmente não existe uma solução explicita no Javadoc ou nos manuais da Sun...

--
Nicholas Dacal A. Bittencourt
http://goronah.blog.br

We also realized that solving everyone?s problems was too big of a challenge for the first release. It would be better to build a product that a lot of people love, than one that everyone tolerates (...) - Paul Buchheit, Gmail Engineer
[WWW] [MSN]
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline


Já tentei fazer isso tb e não encontrei solução, na época encontrei um bug no site da sun. Da uma pesquisada lá.

Flw
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

nicholas.bittencourt wrote:Pessoal,

Estou criando uma classe ObjectHelper para realizar as operações basicas em cima de um objeto, como compare, hash e toString, usando genéricos e annotations. Meu problema acontece quando tenho que descobrir dinamicamente a Classe que o Helper se refere quando ele é criado dinamicamente... Deixa eu explicar.



Tudo bem que vc crie essas funções para devertimento, mas numa aplicação real, elas não devem ser definidas fora do objeto.

O problema com a sua abordagem é que a sua classe não precisa ser genérica em primeiro lugar, mas se for,será apenas para facilitar a escrita e a tipagem... assim



Uso



O objetivo de usar reflection é não precisar saber qual é a classe especifica,e portanto generics é desnecessário neste caso.

Como disse antes, e repito, hashCode() , toString() e compare() não devem ser implementados de forma genérica como vc está tentando, e sim dentro dos objetos correspondentes... mas ai fica como fazer, se vc quiser muito fazer isso...



Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
mister__m
Virtual Machine Man
[Avatar]

Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline

nicholas.bittencourt wrote:


Creio eu que isso:



deve funcionar, mas é um baita code smell.

Michael Nascimento Santos, aka Mister M

Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team