Annotations

15 respostas
C

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;

}

15 Respostas

Marky.Vasconcelos

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.

rogelgarcia

Você pode utilizar orientação a aspectos também para atingir esse tipo de objetivo…

Um ClassLoader personalizado também consegue fazer isso…

C

Mark_Ameba
eu to testando isso com aspectJ, conseguindo eu posto aqui.

C

rogelgarcia:
Você pode utilizar orientação a aspectos também para atingir esse tipo de objetivo…

Um ClassLoader personalizado também consegue fazer isso…

você tem algum exemplo ou documentação de aspectJ ?

rogelgarcia

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?

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…

C

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…

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.

B

http://apt-jelly.sourceforge.net/

fesaab

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/

rogelgarcia

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…

Paulo_Silveira

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.

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.

rogelgarcia

Muito legal o artigo…

rogelgarcia

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?!

rogelgarcia

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/

Marky.Vasconcelos

Paulo Silveira:
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.

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.

Ta… fiquei incredulo com isso.
Gostei do artigo vou estudar melhor depois.

Criado 14 de abril de 2010
Ultima resposta 15 de abr. de 2010
Respostas 15
Participantes 6