DEV Community

Anotações (Metadados)

1. Conceito de Anotações

  • Definição: Informações complementares embutidas no arquivo-fonte, sem alterar as ações do programa.
  • Uso: Processadas por ferramentas de desenvolvimento, como geradores de código, compiladores e ferramentas de implantação.
  • Metadados: Termo associado às anotações, mas o uso de "anotação" é preferido.

2. Estrutura de uma Anotação

  • Criada com o símbolo @ seguido de interface.
  • Composta exclusivamente por declarações de métodos, que agem como campos.

Exemplo:

@interface MyAnno {
    String str();
    int val();
}

Enter fullscreen mode Exit fullscreen mode

3. Aplicação de Anotações
Sintaxe: Nome da anotação precedido por @, seguido de inicializações para seus membros.

Exemplo de uso:

@MyAnno(str = "Annotation Example", val = 100)
public static void myMeth() {
    // ...
}

Enter fullscreen mode Exit fullscreen mode

Tipos de Anotações:

  • Marcadoras: Não possuem parâmetros. Exemplo: @override.
  • Parametrizadas: Possuem valores atribuídos a seus membros. Exemplo: @MyAnno.

4. Anotações Internas de Uso Geral

  • @Retention: Especifica quanto tempo a anotação estará presente.
  • @Documented: Anotação marcadora para incluir uma anotação na documentação.
  • @Target: Define onde uma anotação pode ser usada.
  • @Inherited: Permite que uma anotação em uma superclasse seja herdada.
  • @override: Garante que um método realmente sobrepõe outro.
  • @deprecated: Marca elementos como obsoletos.
  • @SafeVarargs: Indica segurança em métodos com varargs.
  • @SuppressWarnings: Suprime avisos do compilador.
  • @FunctionalInterface: Marca uma interface como funcional (exatamente um método abstrato).

5. Exemplo com @deprecated
Marca uma classe e um método como obsoletos. Gera avisos ao compilar.

Exemplo de código:

@Deprecated
class MyClass {
    private String msg;

    MyClass(String m) {
        msg = m;
    }

    @Deprecated
    String getMsg() {
        return msg;
    }
}

public class AnnoDemo {
    public static void main(String[] args) {
        MyClass myObj = new MyClass("test");
        System.out.println(myObj.getMsg());
    }
}

Enter fullscreen mode Exit fullscreen mode

6. JDK 8: Novas Anotações
@Repeatable: Suporte para aplicar a mesma anotação mais de uma vez.
@Native: Marca campos de constantes acessados por código nativo.

Conclusão
Anotações são poderosas ferramentas que auxiliam no desenvolvimento e na documentação do código, com suporte extensivo para casos personalizados e específicos. Exemplos fornecidos ajudam a compreender seu funcionamento básico.

Image description

Top comments (0)