Buscar..


Introducción

El procesador de anotaciones es una herramienta desarrollada en javac para escanear y procesar anotaciones en tiempo de compilación.

Las anotaciones son una clase de metadatos que se pueden asociar con clases, métodos, campos e incluso otras anotaciones. Hay dos formas de acceder a estas anotaciones en tiempo de ejecución a través de la reflexión y en tiempo de compilación a través de los procesadores de anotación.

@NonNull Annotation

public class Foo {
    private String name;
    public Foo(@NonNull String name){...};
    ...
}

Aquí @NonNull es una anotación que es procesada por el estudio de Android para advertirle que la función particular necesita un parámetro no nulo.

Tipos de anotaciones

Hay tres tipos de anotaciones.

  1. Anotación de marcador - anotación que no tiene método

    @interface CustomAnnotation {}
    
  1. Anotación de valor único : anotación que tiene un método

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. Anotación multivalor : anotación que tiene más de un método

    @interface CustomAnnotation{  
        int value1();  
        String value2();  
        String value3();  
    }
    

Creación y uso de anotaciones personalizadas

Para crear anotaciones personalizadas necesitamos decidir

  • Destino: en el que funcionarán estas anotaciones como nivel de campo, nivel de método, nivel de tipo, etc.
  • Retención - a qué nivel de anotación estará disponible.

Para esto, hemos construido en anotaciones personalizadas. Echa un vistazo a estos más utilizados:

@Objetivo

Objetivo y lo que significa

@Retencion

Retención y su significado.

Creación de anotaciones personalizadas

@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class   
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{  
      int value();    
}

Uso de anotaciones personalizadas

class Foo{  
  @CustomAnnotation(value = 1)  // will be used by an annotation processor
  public void foo(){..}  
}

el valor proporcionado dentro de @CustomAnnotation será consumido por un Annotationprocessor puede ser generar código en tiempo de compilación, etc.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow