
@Documented anotación indica que los elementos que utilizan esta anotación debe documentar JavaDoc. Por ejemplo:
java.lang.annotation.Documented
@Documented
public @interface MiAnotacion {
//cuerpo de la anotacion
}
@MiAnotacion
public class MiClase {
//Cuerpo de la clase
}
Mientras que la generación de la Javadoc de la clase MiClase, el @MiAnotacion anotación se incluiría en eso.
2-@Target
En él se especifica en el que podemos usar la anotación. Por ejemplo: En el código de abajo, hemos definido el tipo de destino como el método que significa la anotación a continuación sólo se pueden utilizar en los métodos.
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
public @interface MiAnotacion {
}
public class MiClase {
@MiAnotacion
public void miMetodo()
{
//Hacer algo
}
}
Nota: 1) Si no se define ningún tipo de destino que significa anotación se puede aplicar a cualquier elemento.
2) Además de ElementType.METHOD, una anotación siguiente puede tener posibles valores objetivo.
ElementType.METHOD
ElementType.PACKAGE
ElementType.PARAMETER
ElementType.TYPE
ElementType.ANNOTATION_TYPE
ElementType.CONSTRUCTOR
ElementType.LOCAL_VARIABLE
ElementType.FIELD
3-@Inherited
Las señales de anotación @Inherited de que una anotación personalizado que se utiliza en una clase deben ser heredados por todos sus subclases. Por ejemplo:
java.lang.annotation.Inherited
@Inherited
public @interface MiAnotacion {
}
@MiAnotacion
public class ClasePadre {
...
}
public class ClaseHija extends ClasePadre {
...
}
Aquí el ClasePadre clase está utilizando @MiAnotacion anotación que está marcado con la anotación @inherited. Esto significa que el ClaseHija subclase hereda el @MiAnotacion.
4-@Retention
Se indica cómo han de permanecer a largo anotaciones con el tipo de anotación.
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface MiAnotacion {
}
Aquí hemos utilizado RetentionPolicy.RUNTIME. Hay otras dos opciones también. Vamos a ver qué es lo que significan:
RetentionPolicy.RUNTIME: La anotación debe estar disponible en tiempo de ejecución, para la inspección a través de Java reflexión.
RetentionPolicy.CLASS: La anotación sería en el archivo .class pero no estaría disponible en tiempo de ejecución.
RetentionPolicy.SOURCE: La anotación estaría disponible en el código fuente del programa, no sería ni en el archivo .class, ni estará disponible en el tiempo de ejecución.
No hay comentarios.:
Publicar un comentario