Olá,
supondo que em tempo de projeto, criei uma classe com métodos, alguém sabe como criar propriedades em tempo de execução ?
Stand Up
CGlib
ASM
Javaassist
São todas bytecode libs que fazem isso. Mas meu amigo, acho que o trabalho não compensa.
Bem, será mesmo que precisa trabalhar com libs que envolvem bytecode?
Porque não usar um Map?
[code]Map<String, String> propriedades = new HashMap<String, String>();
// adiciona elementos no mapa (chave, valor)
propriedades.put( “debug”, “true” );
propriedades.put( “producao”, “false” );
// obtém um elemento do mapa (chave)
System.out.println( propriedades.get( “debug” ) );
// itera pelo mapa
for ( Entry<String,String> propriedade : propriedades.entrySet() ) {
System.out.println( propriedade.getKey() + " " + propriedade.getValue() );
}
// remove um elemento do mapa (retorna o valor associado à chave)
System.out.println( propriedades.remove( “producao” ) );[/code]
[]´s
É isso que eu quis dizer. Para criar os atributos na classe mesmo pelas bytecodes libs é dificil, um Map resolveria o problema. Mas depende para que ele quer isso.
olá,
um bom exemplo prático, supondo que tenho uma classe Registro, sem nenhum método ou propriedade, mas dinâmicamente preciso criar as propriedades com os nomes dos campos da tabela e seus valores, depois poderia ler/atribuir:
System.out.println( oReg.codigo );
oReg.razaosocial:="Supermercado";
....
Mark_Ameba,
uma observação, sua extensa assinatura no rodapé, prejudica muito a leitura das resposta nos tópicos, esse é o foco e não o rodapé :D.
Grato.
É né, isso que ja diminui ela varias vezes.
Foi mal.
olá,
um bom exemplo prático, supondo que tenho uma classe Registro, sem nenhum método ou propriedade, mas dinâmicamente preciso criar as propriedades com os nomes dos campos da tabela e seus valores, depois poderia ler/atribuir:
System.out.println( oReg.codigo );
oReg.razaosocial:="Supermercado";
....
Mark_Ameba,
uma observação, sua extensa assinatura no rodapé, prejudica muito a leitura das resposta nos tópicos, esse é o foco e não o rodapé :D.
Grato.[/quote]
Entendi sua dúvida. Como eu disse, vc pode fazer com mapas. Não fica lá aquelas coisas, mas quebra um galho.
Uma alternativa melhor (que acabei de lembrar) seria usar um DynaBean (http://commons.apache.org/beanutils/api/org/apache/commons/beanutils/DynaBean.html) do pacote Commons BeanUtils (http://commons.apache.org/beanutils/).
Olhe a descrição:
Já usei em um projeto onde eu precisava criar relatórios dinâmicos e tbm em outras situações. Sempre foi muito útil.
[]´s