1. Metanotaciones
Meta-anotación: Además de usar directamente las anotaciones definidas por JDK, también podemos personalizar las anotaciones.En JDK 1.5, se proporcionan 4 clases de anotación estándar para anotar tipos de anotación, a las que llamamos meta-anotación (meta-anotación).), Ellos son:
@Objetivo
@Retención
@Documentado
@Heredado
2, @Objetivo
@Target: se usa para definir el alcance de la anotación que defina.
La enumeración que proporciona incluye principalmente:
public enum ElementType {
/** 类、接口(包括注解类型)或枚举声明 */
TYPE,
/** 字段声明(包括枚举常量) */
FIELD,
/** 方法声明 */
METHOD,
/** 形参声明 */
PARAMETER,
/** 构造函数声明 */
CONSTRUCTOR,
/** 局部变量声明 */
LOCAL_VARIABLE,
/** 注解类型声明 */
ANNOTATION_TYPE,
/** 包装声明 */
PACKAGE,
/**
* 类型参数声明
*
* 自从:1.8
*/
TYPE_PARAMETER,
/**
* 模块声明
*
* 自从:1.8
*/
TYPE_USE,
/**
* 模块声明
*
* 自从:9
*/
MODULE
}
3, @ Retención
@Retención: describe el intervalo de tiempo para la retención de anotaciones
public enum RetentionPolicy {
/**
* 注解将被编译器丢弃
*/
SOURCE,
/**
* 注解在class文件中可用,但会被VM丢弃 ,这是默认行为。
*/
CLASS,
/**
*注解会被编译器记录在类文件中,并在运行时由 VM 保留,因此它们可以被反射读取。
*也可以看看:
*
*reflect.AnnotatedElement
*/
RUNTIME
}
4, @Documentado
@Documentado: describe si se debe conservar la información de las anotaciones al generar documentación de ayuda para una clase mediante la herramienta javadoc.
5, @ heredado
@Inherited: Hace que la anotación modificada por él sea heredable (si una clase usa una anotación modificada por @Inherited, sus subclases automáticamente tendrán la anotación).
Para obtener más información, consulte: anotaciones personalizadas de Java y obtención de anotaciones a través de la reflexión