0Pricing
Java Academy · Lección

Definición de anotaciones: elementos y valores predeterminados

Cree anotaciones personalizadas con @interface, defina elementos con valores predeterminados y aplique meta anotaciones.

Definición de anotaciones: elementos y valores predeterminados es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.

¿Qué son las anotaciones?

Las anotaciones son metadatos que se aplican a clases, métodos, campos o parámetros. No cambian directamente el comportamiento; proporcionan información a los compiladores, frameworks o procesadores en tiempo de ejecución.

Declarar una anotación con @interface

Utilice @interface para declarar una anotación personalizada. Sus elementos tienen el aspecto de métodos. El valor predeterminado se especifica con default.

@interface Retry {
    int times()      default 3;
    long delayMs()   default 1000L;
    Class<? extends Throwable>[] on() default {Exception.class};
}

Aplicar la anotación

Aplique la anotación al destino correspondiente. Omita los elementos que tengan valores predeterminados. Cuando solo un elemento se denomina value, puede establecerlo sin indicar la clave.

@Retry(times = 5, delayMs = 500)
public void callExternalService() { ... }

// Single-element shorthand:
@interface Label { String value(); }
@Label("production")
public class App {}

Tipos de elementos de las anotaciones

Los elementos solo pueden ser: tipos primitivos (int, long, etc.), String, Class, un enum, otro tipo de anotación o un arreglo unidimensional de los tipos anteriores.

@interface Config {
    String   host();
    int      port()      default 8080;
    LogLevel level()     default LogLevel.INFO;  // enum
    Class<?> handler()   default DefaultHandler.class;
    String[] tags()      default {};
}

Metaanotaciones: @Retention

@Retention controla durante cuánto tiempo se conserva la anotación: SOURCE (el compilador la descarta), CLASS (se incluye en .class, pero no está disponible en tiempo de ejecución), RUNTIME (se puede leer mediante reflexión).

@Retention(RetentionPolicy.RUNTIME)
@interface Retry {
    int times() default 3;
}

Metaanotaciones: @Target

@Target restringe los lugares donde se puede aplicar la anotación. Puede indicar varios destinos.

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface Audited {
    String description() default "";
}

@Documented y @Inherited

@Documented incluye la anotación en Javadoc. @Inherited permite que las subclases hereden la anotación de su superclase (solo para anotaciones a nivel de clase).

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Category {
    String value();
}

Anotaciones @Repeatable

Marque una anotación con @Repeatable para permitir que aparezca varias veces en el mismo elemento. Proporcione una anotación contenedora que almacene un arreglo.

@Repeatable(Tags.class)
@interface Tag { String value(); }
@interface Tags { Tag[] value(); }

@Tag("fast")
@Tag("stable")
public class Service {}

Valores predeterminados y omisión de elementos

Los elementos con valores default no necesitan especificarse en el punto de uso. Los elementos sin valores predeterminados son obligatorios.

@Retry                  // uses defaults: times=3, delayMs=1000
public void action1() {}
@Retry(times=1)         // overrides only times; delayMs stays 1000
public void action2() {}

Anotación frente a interfaz marcadora

Las interfaces marcadoras (como Serializable) se comprueban con instanceof y transmiten información de tipo. Las anotaciones son más flexibles: contienen metadatos y pueden tener elementos.

Anotaciones integradas habituales

Conozca las anotaciones del JDK: @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings y @SafeVarargs.

@Override
public String toString() { return "User{" + name + "}"; }
@Deprecated(since = "2.0", forRemoval = true)
public void oldMethod() {}

Comprobación rápida

¿Cuál es la única política de retención que permite leer una anotación en tiempo de ejecución?

Recapitulación

Declare anotaciones con @interface. Utilice @Retention(RUNTIME) para el procesamiento mediante reflexión, @Target para restringir su uso y default para los elementos opcionales. @Repeatable permite apilarlas.

Preguntas frecuentes

¿La lección «Definición de anotaciones: elementos y valores predeterminados» es gratis?

Sí — el texto completo de «Definición de anotaciones: elementos y valores predeterminados» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Definición de anotaciones: elementos y valores predeterminados»?

Cree anotaciones personalizadas con @interface, defina elementos con valores predeterminados y aplique meta anotaciones. Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Java Academy?

No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Definición de anotaciones: elementos y valores predeterminados»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Java Academy?

Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Definición de anotaciones: elementos y valores predeterminados
  2. Políticas de retención y tipos de destino
  3. Procesamiento de anotaciones en tiempo de ejecución
  4. Procesadores de anotaciones en tiempo de compilación
← Volver a Java Academy