1. La anotación más común.
•@Override: usado en métodos para decirle a otros que este método anula la clase principal
•@Deprecated: Se recomienda que otros no utilicen la API anterior. Generará un mensaje de advertencia durante la compilación y se puede configurar en todos los elementos del programa.
•@SuppressWarnings: desactiva temporalmente algunos mensajes de advertencia
•@Entity: Indica que esta clase es una clase persistente
2. Diseñar una anotación propia
Lea el código primero antes de hablar.
1. Implementación de anotaciones con un solo parámetro.
Copie el código de código de la siguiente manera:
paquete chb.test.annotation;
importar java.lang.annotation.Documented;
importar java.lang.annotation.ElementType;
importar java.lang.annotation.Retention;
importar java.lang.annotation.RetentionPolicy;
importar java.lang.annotation.Target;
@Destino(TipoElemento.TIPO)
@Retención(RetentionPolicy.RUNTIME)
@Documentado
pública @interfaz MiAnotación1 {
Valor de cadena();
}
2. Implementación de anotaciones con dos parámetros.
Copie el código de código de la siguiente manera:
paquete chb.test.annotation;
importar java.lang.annotation.Documented;
importar java.lang.annotation.ElementType;
importar java.lang.annotation.Retention;
importar java.lang.annotation.RetentionPolicy;
importar java.lang.annotation.Target;
@Destino(TipoElemento.MÉTODO)
@Retención(RetentionPolicy.RUNTIME)
@Documentado
pública @interfaz MiAnotación2 {
Descripción de cadena();
booleano esAnnotation();
}
3. Clase experimental de anotación.
Copie el código de código de la siguiente manera:
paquete chb.test.annotation;
@MyAnnotation1("esta es la anotación1")
demostración de anotación de clase pública {
@MyAnnotation2(descripción="esta es anotación2",isAnnotation=true)
público vacío decir Hola(){
System.out.println("¡hola mundo!");
}
}
4. Clase de descripción de prueba de anotación
Copie el código de código de la siguiente manera:
paquete chb.test.annotation;
importar java.lang.reflect.Method;
importar org.junit.Test;
anotación de prueba de clase pública {
@Prueba
prueba de anulación pública () arroja ClassNotFoundException, SecurityException, NoSuchMethodException {
Clase<?> cls = Class.forName("chb.test.annotation.AnnotationDemo");
bandera booleana = cls.isAnnotationPresent(MyAnnotation1.class);
si(bandera){
System.out.println("Juzgue que la clase es una anotación");
MiAnotación1 anotación1 = cls.getAnnotation(MiAnotación1.class);
System.out.println(annotation1.value());
}
Método método = cls.getMethod("sayHello");
bandera = método.isAnnotationPresent(MyAnnotation2.class);
si(bandera){
System.out.println("El método de juicio también es la anotación");
MyAnnotation2 anotación2 = método.getAnnotation(MyAnnotation2.class);
System.out.println(annotation2.description()+"/t"+annotation2.isAnnotation());
}
}
}
Como resultado del experimento, la consola generó la siguiente información:
Determinar si la clase es anotación.
esta es la anotación1
El método de juicio también es anotación.
esta es la anotación 2 verdadera
3. Introducción y explicación
1. @Target(ElementType.TYPE) en MyAnnotation1
El ElementType en @Target se usa para especificar en qué elementos se puede usar el tipo de anotación. Por ejemplo:
TYPE (tipo), FIELD (atributo), METHOD (método), PARAMETER (parámetro), CONSTRUCTOR (constructor), LOCAL_VARIABLE (variable local), PACKAGE (paquete), donde TYPE (tipo) se refiere al tipo que se puede utilizar en Tipos de clase, interfaz, enumeración y anotación.
2. @Retention(RetentionPolicy.RUNTIME) en MyAnnotation1
RetentionPolicy tiene tres estrategias, a saber:
•FUENTE: Esta información del tipo de anotación sólo se conservará en el código fuente del programa. Si se compila el código fuente, los datos de la anotación desaparecerán y no se conservarán en el archivo .class compilado.
•CLASS: Esta información de tipo de anotación se conserva en el código fuente del programa y también en el archivo .class compilado. Durante la ejecución, esta información no se cargará en la JVM. Nota: La estrategia predeterminada es el tipo CLASS.
•RUNTIME: Indica que la información se retiene en el código fuente y en los archivos .class compilados, y esta información se cargará en la JVM durante la ejecución.
3. @Documentado en MyAnnotation1
El propósito es mostrar esta información de anotación en el documento de la API de JAVA. Si no se agrega @Documented, la información de anotación relevante no se mostrará en el documento de la API de JAVA.
4. @interfaz en MyAnnotation1
Palabra clave, que indica que la clase está definida para Anotación
5. Valor de cadena () en MyAnnotation1;
Indica que hay un parámetro de miembro con el valor de nombre y el derecho de acceso como modificador predeterminado. Tenga en cuenta los dos puntos siguientes:
•Los derechos de acceso solo se pueden modificar con público y predeterminado (predeterminado)
•Los miembros de parámetros solo pueden usar los ocho tipos de datos básicos de byte, short, char, int, long, float, double, boolean y tipos de datos como String, Enum, Class, anotaciones y matrices de estos tipos.
6.@MyAnnotation1("esta es anotación1") en AnnotationDemo
Como MyAnnotation1 tiene solo un parámetro, puede escribir el valor directamente entre paréntesis. Nota: Si la anotación tiene solo un parámetro, se recomienda que el nombre del parámetro se defina como valor.
7.cls.isAnnotationPresent (MyAnnotation1.class) en TestAnnotation
Determinar si la clase usa la anotación de MyAnnotation1
8. MyAnnotation1 en TestAnnotation anotación1 = cls.getAnnotation (MyAnnotation1.class)
Devuelve la anotación de esta clase para MyAnnotation1
9. método.isAnnotationPresent (MyAnnotation2.class) en TestAnnotation
Determinar si el método utiliza la anotación de MyAnnotation2