Además de la retención, hay otras tres anotaciones proporcionadas por JDK 5, a saber, Target, heredado y documentado.
El objetivo objetivo es donde se usa la anotación objetivo, que define el momento de la anotación que se utiliza, es decir, el tipo de elementos del programa a los que se aplica la anotación. Si no existe una meta anotación objetivo en la declaración de tipo de anotación, el tipo declarado se puede usar en cualquier elemento de programa. Si existe dicha metaannotación, el compilador aplica el límite de uso especificado.
El objetivo se define de la siguiente manera:
@Documented@retención (retenciónPolicy.Runtime) @Target (elementType.annotation_type) public @Interface Target {elementType [] valor ();}Como puede ver, Target tiene solo un atributo de valor, y su tipo es el tipo de elemento enum. La declaración ElementType es la siguiente:
public enum elementtype { / ** Las anotaciones se pueden usar en clases, interfaces (incluidos tipos de anotación) o declaraciones de enum* / type, / ** declaraciones de campo (incluidas constantes enum)* / field, / ** declaraciones de método* / método, / ** parámetros de parámetros* / parámetro, / ** Declaraciones de método de constructor* / constructor, / ** locales de parámetros* / ** Declaraciones de tipo de anotación* / annotation_type, / ** declaraciones de paquete* / paquete}Las anotaciones documentadas indican si la información de anotación se agrega al documento al hacer javadoc. Si la anotación usa @Documented cuando se declara, la información de anotación se agregará al Javadoc al hacer el Javadoc. La declaración de anotación es la siguiente:
@Documentado@retención (valor = tiempo de ejecución) @Target (valor = annotation_type) // indica que esta anotación solo se puede usar al declarar la anotación, es decir, meta anotación pública @interface documentada {}La anotación hereditaria también es una meta anotación, y la declaración es la siguiente:
@Documentado@retención (valor = runtime) @target (valor = annotation_type) public @interface heredado {}Las anotaciones hereditarias indican si las anotaciones serán heredadas por subclases, y el valor predeterminado no se hereda. Cuando se declara una anotación, se usa la anotación @inherited, entonces la anotación será heredada por una subclase de la clase utilizando la anotación.