Bom dia estou trabalhando com reflaction e annottation pela primeira vez e esbarrei com um problema que não entendi .
Preciso descobrir qual atributo foi marcado com a annotatação @HideAttribute mas meu metodo não esta funcionando :
//minha annotationpublic@interfaceHideAttribute{}//minha classepublicclassUser{@HideAttributeprivateStringlogin;privateStringsenha;privateIntegeridade;publicStringgetLogin(){returnlogin;}publicvoidsetLogin(Stringlogin){this.login=login;}publicStringgetSenha(){returnsenha;}publicvoidsetSenha(Stringsenha){this.senha=senha;}publicIntegergetIdade(){returnidade;}publicvoidsetIdade(Integeridade){this.idade=idade;}}//meu metodopublicbooleanisHideAttribute(Stringatribute){booleanresult=false;try{Classcls=Class.forName(User.class);Fieldfield=cls.getDeclaredField(atribute);//aqui eu inseri um teste verificando se uma das annotações//da classe user é a @HideAttribute mas as anotaçãoes desse attributo vêm null no debug//que codigo vai aqui ?}catch(Throwablee){}returnresult;}//meu mainpublicstaticvoidmain(String[]args){ReflactionUtil<User>r=newReflactionUtil<User>(User.class);System.out.println(r.isHideAttribute("login"));}
PS: É Reflection e não reflaction como voce escreveu tantas vezes.
ccefetpb
Desculpe =P , como eu disse 1ª vez mechendo com REFLECTION .
Bem usando o eclipse eu cliquei no projeto > new Annotation pus o nome e pronto !
Acredito que o erro seja na logica que tentei usar , pq ao usar anotações nativas do java como @Target eu rodei e ainda assim não funcionou !
Se não deixei claro o que preciso é descobrrir se o atributo foi marcado x foi marcado com a anotação y.
Sei que talvez seja pedir muito , mas se alguem pudesse colar o codigo que vai ali ( abaixo dos comentario ) eu resolveria meu problema =.=.
Só assim voce consegue procurar via Reflection essas anotações. Se não as anotações são perdidas depois de compilado.
Aproveitando queria fazer uma pergunta.
Qual utilidade das anotações se não em Runtime?
(Desconsiderando as da compilação como o @SupressWarnings)
Não entendo outra maneira de procura-las antes disso.
ccefetpb
Funcionou …
Muito grato …
bem o metodo ficou assim :
Fieldfield=cls.getDeclaredField(atribute);HideAttributeatt=field.getAnnotation(HideAttribute.class);//Null se nao existe
Para marcar resolvido edita o primeiro post e muda o titulo com [resolvido]
Marky.Vasconcelos
E anotações não servem apenas para verem se estão presentes.
Voce pode ter valores também.
ccefetpb
grato …
Isso eu sabia , na verdade pra o que estou fazendo preciso apenas saber sobre a marcação ou não .
Ainda tenho muitas duvidas quanto a como criar um objeto , setar os atributos .
Principalmente pq estou tentando misturar reflection , generics , annotations e swing … E não sou especialista em nehuma dessas tecnologias ( nem tenho experiencia ).
Li o tutorial do GUJ e esta me ajudando o problema mesmo e a falta de experiencia e pressa que tenho …
Bem novamente grato pela ajuda .
Espero contar com vc nos proximos foruns … pq acredite duvida e o que nao falta!
Tentarei colocar o nome correto na proxima.
M
marcobiscaro2112
Mark_Ameba:
Aproveitando queria fazer uma pergunta.
Qual utilidade das anotações se não em Runtime?
(Desconsiderando as da compilação como o @SupressWarnings)
Não entendo outra maneira de procura-las antes disso.
O primeiro caso seria o @SupressWarnings ou @Override (que se usado erroneamente impede a compilação).
O último é o mais comum. Agora, será que alguém teria um exemplo de aplicação prática do segundo caso? (as anotações anotadas com @Documented seriam um exemplo?)