Prefacio
En la actualidad, cada vez más diseños arquitectónicos utilizan anotaciones, como Spring3.0, Struts2 y otros marcos. Primero veamos la definición de la anotación. El siguiente es un código que usa JDK 5 anotación @Target:
@Target ({elementType.method})@retención (retenciónPolicy.Runtime)@herhherited@documentpublic @interface asynlog {}1. Uso de @Target
java.lang.annotation.Target
Se usa para establecer el alcance del uso de anotaciones
java.lang.annotation.ElementType
El objetivo especifica los ámbitos de anotación para usar colecciones de enumeración
2. Uso de ElementType
| Obtener el valor | Alcance de la anotación |
| MÉTODO | Se puede utilizar en métodos |
| TIPO | Se puede usar en clases o interfaces |
| Anotación_type | Se puede usar en tipos de anotación (tipos modificados por @Interface) |
| CONSTRUCTOR | Se puede utilizar en métodos de construcción |
| CAMPO | Se puede usar en el dominio |
| Local_variable | Se puede usar en variables locales |
| PAQUETE | Se utiliza para grabar información del paquete de archivos Java |
| PARÁMETRO | Se puede usar en parámetros |
Aquí hay un punto culminante: ElementType. PAQUETE. No se usa en las clases generales, sino en el paquete de archivo fijo-info.java. Debe enfatizarse aquí que el nombramiento debe ser "paquete-info". Dado que Package-Info.java no es una clase legal, el uso de Eclipse para crear una clase solicitará que sea ilegal, por lo que debe crear paquete-info.java en la forma de crear un archivo.
Por ejemplo, se puede usar un paquete de rango para definir:
@Target ({elementType.package, elementtype.method})@retención (retenciónPolicy.runtime)@heredero@documentedpublic @interface asynlog {}Luego, cree el archivo: paquete-info.java, con el contenido de la siguiente manera:
La copia del código es la siguiente:
@Asynlog
paquete org.my.commons.logs.annotation;
Nota clave: las anotaciones solo se pueden usar dentro del rango establecido por ElementType, de lo contrario se compilará un error. Por ejemplo: el alcance solo contiene elementtype.method, lo que significa que la anotación solo se puede usar en el método de clase, y la excepción se compilará fuera del alcance de uso.