Annotations

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.

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

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.