Um Guia Prático para Dominar Anotações em Java

O que São Anotações?

Anotações em Java funcionam como marcadores ou etiqueats que podem ser aplicadas a elementos do código, como classes, métodos ou campos. Elas fornecem metadados que podem ser usados em tempo de compilação ou execução para modificar comportamentos ou adicionar informações.

Definindo uma Anotação Customizada

Para criar uma anotação, utiliza-se a palavra-chave @interface. O processo envolve especificar onde a anotação pode ser usada e qual seu ciclo de vida, através de meta-anotações como @Target e @Retention.

Por exemplo, defina uma anotação para campos de classe que persista em tempo de execução:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MetadadosCargo {
    String cargo();
    String descricao();
}

As meta-anotações @Target e @Retention são usadas para definir anotações. @Target determina os locais de aplicação, como ElementType.TYPE para classes ou ElementType.METHOD para métodos. @Retention define o período de retenção: RetentionPolicy.SOURCE no código-fonte, RetentionPolicy.CLASS na compilação, ou RetentionPolicy.RUNTIME em tempo de execução.

Aplicando e Utilizando Anotações

Anotações são frequentemente combinadas com reflexão para acessar seus valores em tempo de execução. Considere uma classe de funcionário com campos anotados:

public class Funcionario {
    @MetadadosCargo(cargo = "Desenvolvedor", descricao = "Responsável por desenvolvimento de software")
    public String nome;

    public void mostrarDetalhes() {
        Class> classe = this.getClass();
        Field[] campos = classe.getDeclaredFields();

        for (Field campo : campos) {
            MetadadosCargo anotacao = campo.getAnnotation(MetadadosCargo.class);
            if (anotacao != null) {
                String cargo = anotacao.cargo();
                String descricao = anotacao.descricao();
                System.out.println("Nome: " + this.nome + ", Cargo: " + cargo + ", Descrição: " + descricao);
            }
        }
    }
}

Para testar, crie uma instância e chame o método:

public class Aplicacao {
    public static void main(String[] args) {
        Funcionario func = new Funcionario();
        func.nome = "Ana Silva";
        func.mostrarDetalhes();
    }
}

A saída exibirá os detalhes do cargo extraídos da anotação. O processo envolve obter a classe, iterar sobre seus campos, verificar a presença da anotação e acessar seus atributos.

Tags: Java Annotations Java Reflection Custom Annotations Retention Policy meta-annotations

Publicado em 6-18 00:12