Pessoal, uma dúvida:
Supondo a seguinte Annotation:
@Target(value = ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CriarView {
String tipoObjeto();
String nomeObjeto();
}
e a seguinte classe anotada:
public class Cidade {
@CriarView (tipoObjeto=“text”, nomeObjeto=“Código” )
private String codigo;
@CriarView (tipoObjeto=“text”, nomeObjeto=“Nome”)
private String nome;
Como eu posso fazer para, em outra classe, capturar o conteúdo do tipoObjeto e do nomeObjeto definido na classe Cidade?
Tentei o seguinte:
public class ViewGenerator {
private String nomeClasse;
ViewGenerator (String nomeClasse) throws Exception {
this.nomeClasse=nomeClasse;
loadClass(nomeClasse);
}
private void loadClass(String nomeClasse) throws Exception {
Class classe = null;
try {
classe = Class.forName(nomeClasse);
} catch (ClassNotFoundException ex) {
throw new Exception(ex);
}
Field campos[] = classe.getDeclaredFields();
for ( Field campo:campos) {
if (campo.isAnnotationPresent(CriarView.class)) {
Annotation annotation = campo.getAnnotation(CriarView.class);
System.out.println("Annotation: " + annotation);
}
}
}
O que eu estou recebendo como saída do System.out.println é o seguinte:
Annotation: @br.com.nscinfo.beans.CriarView(tipoObjeto=text, nomeObjeto=Código)
Mas, não consigo obter os valores dos “parâmetros” definidos na anotação. Como fazer isso?
[]s
Rafael