| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/10/2007 09:21:37
|
bonfarj
Java Ninja
![[Avatar]](/images/avatar/1454ca2270599546dfcd2a3700e4d2f1.jpg)
Membro desde: 28/03/2006 09:55:47
Mensagens: 298
Offline
|
Acredito que com a Reflection API não seja possível, não sei se existe alguma forma de montar classes dinamicamente. Se isso não for possível vou ter que pensar em outra solução para o meu problema.
Abraços,
|
IGOR BRITO ALVES
@igoralves
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/10/2007 09:30:33
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você não pode adicionar atributos a uma classe em tempo de execução, mas você pode fazer com que sua classe tenha um atributo do tipo Map<String,Object> para que você possa associar nomes a novos atributos.
Exemplo:
...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/10/2007 09:37:43
|
brunogamacatao
JavaBaby
Membro desde: 28/03/2006 14:41:44
Mensagens: 92
Offline
|
Cara, uma saída é usar alguma API de construção de bytecodes em tempo de execução (existem algumas) ou então criar um arquivo .java, compilar em tempo de execução e, finalmente, carregar o código compilado através de um class loader dinâmico. Qualquer ferramenta de geração de código e os ambientes desenvolvimento integrado utilizam esta técnica. Se você quiser realmente cair de cabeça nesse mundo, uma sugestão minha é que dê uma olhada na API Jet, para a construção de templates de geração. Permite que você produza código dinâmico através de templates com o estilo JSP.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/10/2007 09:44:50
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Vc não pode usar Scripting Language Support do Java 6?
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/scripting/
Ou alguma linguagem interpretada que rode sob a jvm como Groovy?
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/10/2007 09:49:16
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Eu acho que prefiro scripting....
Não sei o que pode ser da PermGen com essa geração/compilação/carga de classes dinâmicas.
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/10/2007 10:01:39
|
bonfarj
Java Ninja
![[Avatar]](/images/avatar/1454ca2270599546dfcd2a3700e4d2f1.jpg)
Membro desde: 28/03/2006 09:55:47
Mensagens: 298
Offline
|
thingol wrote:Você não pode adicionar atributos a uma classe em tempo de execução, mas você pode fazer com que sua classe tenha um atributo do tipo Map<String,Object> para que você possa associar nomes a novos atributos.
Gostei sua sugestão. Eu pensei em algo parecido, mas a sua idéia com Map ficou muito melhor que a minha. Reconheço as limitações(getters e setters), mas talvez seja um preço justo.
brunogamacatao wrote:Cara, uma saída é usar alguma API de construção de bytecodes em tempo de execução (existem algumas) ou então criar um arquivo .java, compilar em tempo de execução e, finalmente, carregar o código compilado através de um class loader dinâmico. Qualquer ferramenta de geração de código e os ambientes desenvolvimento integrado utilizam esta técnica. Se você quiser realmente cair de cabeça nesse mundo, uma sugestão minha é que dê uma olhada na API Jet, para a construção de templates de geração. Permite que você produza código dinâmico através de templates com o estilo JSP.
Essa linha de racioncínio é muito boa! Porém, pela forma como eu quero usar com o Struts 2, talvez não seja a melhor opção, Nunca tinha pensando em API's para manipulação de bytecodes, muito legal isso!
E aos amigos que falaram sobre scripting, essa opção nem tinha passado pela minha cabeça. Eu vou ler mais sobre o assunto, nunca mexi com nada de scripting em Java, talvez seja uma boa para essas mudanças dinâmicas.
Valeu pessoal, adorei as dicas, muito obrigado mesmo! E se alguém tiver mais alguma coisa, pode falar, conhecimento nunca é demais!
Abraços a todos!
This message was edited 2 times. Last update was at 15/10/2007 10:04:27
|
IGOR BRITO ALVES
@igoralves
|
|
|
 |
|
|