Olá pessoal,
eu gostaria de criar uma annotation que insira uma propriedade na minha classe
exemplo
@InsereProperty
ele insira em todas as classes uma propriedade
private int quantidade;
public getQuantidade(){
return quantidade;
}
Olá pessoal,
eu gostaria de criar uma annotation que insira uma propriedade na minha classe
exemplo
@InsereProperty
ele insira em todas as classes uma propriedade
private int quantidade;
public getQuantidade(){
return quantidade;
}
Como assim?
Voce quer que todas classes que tenham essa anotação tenham essa propriedade?
Se for é impossivel.
A não ser que voce escreva um compilador.
Você pode utilizar orientação a aspectos também para atingir esse tipo de objetivo…
Um ClassLoader personalizado também consegue fazer isso…
Mark_Ameba
eu to testando isso com aspectJ, conseguindo eu posto aqui.
[quote=rogelgarcia]Você pode utilizar orientação a aspectos também para atingir esse tipo de objetivo…
Um ClassLoader personalizado também consegue fazer isso…[/quote]
você tem algum exemplo ou documentação de aspectJ ?
Tenho não… tem que olhar no google mesmo… mas se tiver alguma dúvida… posta aqui que eu posso ajudar…
Voce já sabe como funciona orientacao a aspectos? Advice, pointcut, etc?
Aliás… lembrei que fiz um trabalho sobre isso na faculdade… só que o trabalho … se eu ainda tiver ele… deve estar no outro computador…
Caso consiga o trabalho te mando…
Vai demorar um pouco pq tá em outro computador… mas hoje te respondo…
[quote=rogelgarcia]Aliás… lembrei que fiz um trabalho sobre isso na faculdade… só que o trabalho … se eu ainda tiver ele… deve estar no outro computador…
Caso consiga o trabalho te mando…
Vai demorar um pouco pq tá em outro computador… mas hoje te respondo…[/quote]
obrigado, eu ja fiz alguma coisa aqui com aspecto, pointcut, advice. interceptei métodos, construtores, porém nao consegui pegar o parâmetro passado.
exemplo uma annotation de log. pegar o parâmetro que foi passado e logar no banco.
Sobre anotações, dê uma olhada aqui e veja se ajuda em algo:
http://www.javasimples.com.br/mundo-java/annotations-o-que-pra-que-serve/
Achei o trabalho que fiz sobre orientação a aspectos… vou publicar ele na internet e já já… passo o link
Enquanto isso, poderá ver os screen casts que montei sobre o trabalho…
Exemplo de logging
http://www.javaframework.org/portal/arquivos/log.htm
Exemplo de uso de anotações para marcar um parâmetro de um método como obrigatório
http://www.javaframework.org/portal/arquivos/req.htm
São exemplos simples… mas interessantes…
[quote=Mark_Ameba]
Voce quer que todas classes que tenham essa anotação tenham essa propriedade?
Se for é impossivel.
A não ser que voce escreva um compilador.[/quote]
Na verdade, e possivel! O Bruno ja deu a dica: pelo APT.
Aqui eu falo bastante disso:
http://blog.caelum.com.br/2009/12/08/metaprogramacao-em-java-o-papel-do-apt/
Mas usar anotacoes pra isso é bastante magica, gera um codigo complexo, dificil de entender e de dar manutencao. Deve-se tomar cuidado.
Muito legal o artigo…
Uma pergunta para os conhecedores de APT…
É possivel eu atualizar uma classe, sem ela estar anotada com nada?
Por exemplo… eu consigo referencia para todas as classes, estando anotadas ou nao?!
Trabalho sobre orientação a aspectos
O que é programação orientada a aspectos?
http://www.javaframework.org/portal/2010/04/14/o-que-programao-orientada-a-aspectos/
[quote=Paulo Silveira][quote=Mark_Ameba]
Voce quer que todas classes que tenham essa anotação tenham essa propriedade?
Se for é impossivel.
A não ser que voce escreva um compilador.[/quote]
Na verdade, e possivel! O Bruno ja deu a dica: pelo APT.
Aqui eu falo bastante disso:
http://blog.caelum.com.br/2009/12/08/metaprogramacao-em-java-o-papel-do-apt/
Mas usar anotacoes pra isso é bastante magica, gera um codigo complexo, dificil de entender e de dar manutencao. Deve-se tomar cuidado.
[/quote]
Ta… fiquei incredulo com isso.
Gostei do artigo vou estudar melhor depois.