| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 19:56:21
|
mchiareli
JavaEvangelist
![[Avatar]](/images/avatar/03e4d3f831100d4355663f3d425d716b.png)
Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline
|
Tenho uma classe:
eu preciso verificar quais os atributos desta classe é marcada com a annotation @Atributo, mas essa classe esta em um ArrayList em outra classe, por exemplo:
Como eu pegaria a classe que <Dispositivo> que esta no ArrayList...
se eu usar o metodo getGenericType() ele me retorna um Type:
java.util.ArrayList<Dispositivo>
oque eu podeira fazer, pq eu não terei certeza da classe que está no array.
|
codifica.wordpress.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 21:19:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
mchiareli wrote:
o que eu podeira fazer, pq eu não terei certeza da classe que está no array.
Ora, se você tem um List<Dispositivo> e não fez nenhum cast que causou warning, deve ter apenas objetos da classe Dispositivo ou de suas subclasses.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 21:56:45
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
mchiareli wrote:
oque eu podeira fazer, pq eu não terei certeza da classe que está no array.
Não tem como fazer isso que vc quer pq os tipos são apagados depois da compilação. Eles não ficam no codigo como os annotations, por isso não tem como usar reflection.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 21:57:01
|
mchiareli
JavaEvangelist
![[Avatar]](/images/avatar/03e4d3f831100d4355663f3d425d716b.png)
Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline
|
mas eu nao vou saber qual o tipo generico declarado, esse foi um exemplo simples apenas....
|
codifica.wordpress.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 22:16:31
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Ou seja: você não consegue saber se o objeto é da classe Dispositivo sem usar um "instanceof" em tempo de execução. De qualquer maneira, você pode chamar, para cada membro da classe do objeto, o método getAnnotations() ou isAnnotationPresent()
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2007 02:26:25
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
Veja:
Deu para entender ? Na verdade não precisa de saber qual é a classe de T
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/03/2007 14:47:30
|
mchiareli
JavaEvangelist
![[Avatar]](/images/avatar/03e4d3f831100d4355663f3d425d716b.png)
Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline
|
sergiotaborda wrote:Veja:
Deu para entender ? Na verdade não precisa de saber qual é a classe de T
deu pra entender sim kra.....mas eu tenho um Field que representa uma collection
como eu pego a collection em sim que eh representado por esse field para interar sobre ela para verificar os atributos nos objetos que estão nela??
tipo tenho um field
Field field
field.getType() = ArrayList;
blz....
como eu tenho acesso aos objetos dentro deste arraylist??
|
codifica.wordpress.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/03/2007 18:30:11
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
deu pra entender sim kra.....mas eu tenho um Field que representa uma collection
como eu pego a collection em sim que eh representado por esse field para interar sobre ela para verificar os atributos nos objetos que estão nela??
tipo tenho um field
Field field
field.getType() = ArrayList;
como eu tenho acesso aos objetos dentro deste arraylist??
Ah! Bom , isso é só fazer ...
onde field é o campo obtido dos metados e instancia é um objeto da classe em causa. E depois usa o outro código que falei.
Isto só funciona se vc tiver um objeto da classe.
Se não tiver, ou se quiser usar apenas os metadados, o que vc quer fazer não é possivel. A solução nesse caso seria criar um anotação que especifica a classe , ou super-classe, dos itens na lista algo assim
A funcionalidade disto é limitada,pois obriga T a ser de uma certa classe,o que pode não ser possivel/desejável. Dependendo do que vc está tentando fazer pode ser a solução ou não.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
|
|