Definição de Anotações: Elementos e Valores Padrão
Crie anotações personalizadas com @interface, defina elementos com valores padrão e aplique meta-anotações.
Definição de Anotações: Elementos e Valores Padrão é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.
O que são anotações?
Anotações são metadados aplicados a classes, métodos, campos ou parâmetros. Elas não alteram diretamente o comportamento — fornecem informações para compiladores, estruturas ou processadores em tempo de execução.
Declarando uma anotação com @interface
Use @interface para declarar uma anotação personalizada. Os elementos se parecem com métodos. O valor padrão é especificado com default.
@interface Retry {
int times() default 3;
long delayMs() default 1000L;
Class<? extends Throwable>[] on() default {Exception.class};
}Aplicando a anotação
Aplique a anotação ao alvo. Omita os elementos que têm valores padrão. Quando apenas um elemento se chama value, ele pode ser definido sem a chave.
@Retry(times = 5, delayMs = 500)
public void callExternalService() { ... }
// Single-element shorthand:
@interface Label { String value(); }
@Label("production")
public class App {}Tipos de elementos de anotação
Os elementos só podem ser: tipos primitivos (int, long, etc.), String, Class, uma enumeração, outro tipo de anotação ou um vetor unidimensional de qualquer um dos tipos anteriores.
@interface Config {
String host();
int port() default 8080;
LogLevel level() default LogLevel.INFO; // enum
Class<?> handler() default DefaultHandler.class;
String[] tags() default {};
}Meta-anotações: @Retention
@Retention controla por quanto tempo a anotação é mantida: SOURCE (descartada pelo compilador), CLASS (em .class, não disponível em tempo de execução), RUNTIME (legível por reflexão).
@Retention(RetentionPolicy.RUNTIME)
@interface Retry {
int times() default 3;
}Meta-anotações: @Target
@Target restringe onde a anotação pode ser aplicada. É possível listar vários alvos.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface Audited {
String description() default "";
}@Documented e @Inherited
@Documented inclui a anotação no Javadoc. @Inherited permite que as subclasses herdem a anotação da superclasse (somente para anotações no nível da classe).
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Category {
String value();
}Anotações @Repeatable
Marque uma anotação com @Repeatable para permitir que ela apareça várias vezes no mesmo elemento. Forneça uma anotação contêiner que armazene um vetor.
@Repeatable(Tags.class)
@interface Tag { String value(); }
@interface Tags { Tag[] value(); }
@Tag("fast")
@Tag("stable")
public class Service {}Valores padrão e omissão de elementos
Os elementos com valores default não precisam ser especificados no local da chamada. Os elementos sem valores padrão são obrigatórios.
@Retry // uses defaults: times=3, delayMs=1000
public void action1() {}
@Retry(times=1) // overrides only times; delayMs stays 1000
public void action2() {}Anotação vs interface marcadora
Interfaces marcadoras (como Serializable) são verificadas com instanceof e transmitem informações de tipo. As anotações são mais flexíveis — carregam metadados e podem ter elementos.
Anotações integradas comuns
Conheça as anotações do JDK: @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings e @SafeVarargs.
@Override
public String toString() { return "User{" + name + "}"; }
@Deprecated(since = "2.0", forRemoval = true)
public void oldMethod() {}Verificação rápida
Qual é a única política de retenção que torna uma anotação legível em tempo de execução?
Recapitulação
Declare anotações com @interface. Use @Retention(RUNTIME) para processamento por reflexão, @Target para restringir o uso e default para elementos opcionais. @Repeatable permite empilhar anotações.
Perguntas Frequentes
A aula “Definição de Anotações: Elementos e Valores Padrão” é grátis?
Sim — o texto completo de “Definição de Anotações: Elementos e Valores Padrão” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.
O que vou aprender em “Definição de Anotações: Elementos e Valores Padrão”?
Crie anotações personalizadas com @interface, defina elementos com valores padrão e aplique meta-anotações. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Java Academy?
Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Definição de Anotações: Elementos e Valores Padrão”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Java Academy?
Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Definição de Anotações: Elementos e Valores Padrão
- Políticas de Retenção e Tipos de Destino
- Processamento de Anotações em Tempo de Execução
- Processadores de Anotações em Tempo de Compilação