ERA: Dúvida com Annotation e reflection

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

CriarView annotation = ( CriarView ) campo.getAnnotation(CriarView.class); String tipoObjeto = annotation.tipoObjeto;

System.out.println("Tipo: " + annotation.tipoObjeto());
System.out.println("Nome: " + annotation.nomeObjeto());

Obrigado, pessoal… as duas respostas ajudaram a resolver o problema.

Porém, deixe-me favor uma pergunta, antes de perder o tempo de trabalho:

O que estou pretendendo fazer é criar uma classe que, via reflection e annotations, cria uma página JSP (depois, pretendo criar as funcionalidades GUI, também…)

Existe algum framework já pronto que permita fazer isso?

[]s
Rafael