Colección de citas famosas - Diccionario de frases chinas - ¿Qué son las anotaciones de Java?

¿Qué son las anotaciones de Java?

Las anotaciones de Java son equivalentes a anotaciones adicionales (identificación) de clases, métodos o variables. Reimpreso a continuación.

-

La anotación es una característica nueva (llamada anotación en chino) después de Java 5 y 6. Ha sido ampliamente utilizada, como Spring, Hibernate3, Struts2, iBatis3, JPA, JUnit. etc. Al utilizar comentarios, la flexibilidad del código mejora enormemente.

Son comentarios definidos por otros. En términos generales, el uso de anotaciones se define en algún marco básico o biblioteca de clases. Muy pocas personas escribirán un comentario y lo utilizarán en el programa. Por lo tanto, el uso de comentarios a menudo da a las personas una sensación misteriosa y levantará el velo de los comentarios para usted.

El secreto de los comentarios es que pueden controlar algunos comportamientos del programa, estado de ejecución, asignar valores a los miembros, realizar información de configuración, etc. , que es muy diferente del pensamiento de codificación convencional.

Es imposible entender estos problemas simplemente utilizando comentarios definidos por otros. Si realmente queremos conocer los secretos de los comentarios, debemos definir los comentarios nosotros mismos y luego obtener la información de los comentarios en el programa para mi uso.

Permítanme demostrar brevemente el uso de tres tipos de anotaciones: anotaciones de clases, anotaciones de métodos y anotaciones de campos, y ver cómo obtener información de anotaciones.

1. Descripción de la definición

Paquete lavasoft.anntest

Importar idioma. . anotación . retención;

Importar idioma Java . política de retención;

Importar idioma Java . p>

*Comentarios de clase

*

* @autor Lei Zhimin 2009-12-18 14:15:46

*/

@Retention(RetentionPolicy.Runtime)

@Target(ElementType.Type)

interfaz @ pública mi anotación 4 clase {

mensaje de cadena pública ();

}

Paquete lavasoft.anntest

Importar idioma Java. Tipo de elemento. . anotación . retención;

Importar idioma de Java . política de retención;

Importar idioma de destino . p>

*Descripción del método

*

* @autor Lei Zhimin 2009-12-18 14:16:05

* /

@Retention(RetentionPolicy. Runtime)

@Target(ElementType.

método)

interfaz @ pública mi método de anotación 4 {

mensaje de cadena pública 1();

mensaje de cadena pública 2();

}

Paquete lavasoft.anntest

Importar anotación de idioma.

>

Importar anotación de idioma Java .

Importar anotación de idioma .

/**

* comentarios del sitio

*

* @autor Lei Zhimin 2009-12-18 15:23:12

*/

@ Retención (RetentionPolicy. Runtime)

@Target(ElementType.Field)

interfaz @ pública mi campo de anotación 4 {

Cadena pública commont(); >

Public booleanRequest();

}

En segundo lugar, escriba una clase que utilice estas anotaciones.

Paquete lavasoft.anntest

/**

*Una clase Java común

*/

@ MyAnnotation4Class(msg = "Información de anotación de clase de prueba")

Categoría categoría de prueba {

@ myannotation4field (common = "Información de anotación de variables miembro", solicitud = verdadero)

Campo de prueba de cadena privada;

@ mi método de anotación 4 (msg 1 = "Información de anotación del método de prueba 1", msg2 = "Información de anotación del método de prueba 2")

Público void testMethod() {

System.out.println("¡Hola mundo!");

}

}

3. Notas del examen

Para utilizar anotaciones, es necesario obtener objetos anotados a través de la reflexión. Manipular la información de anotaciones a través de objetos de anotación.

Paquete lavasoft.anntest

Importar idioma Java.

Importar método Java. /**

*Categoría de prueba

*

* @autor Lei Zhimin 2009-12-18 14:13:02

*/

Clase pública TestOptAnnotation {

Public static void main(String[] args) lanza NoSuchMethodException, NoSuchFieldException {

clase de prueba t = nueva clase de prueba ( );

Sistema. out.println (" - Información de anotación de clase de mi anotación 4);

mi clase de anotación 4 an 4 clazz = t . get class().

obtener anotación(mi anotación 4 clase . class);

system . println(an 4 clazz . msg()); out.println (" - información de anotación del método 4 de mi anotación);

Método método = t.getClass().getMethod("testMethod ", nueva clase[0]);

mi método de anotación 4 y método 4 = método. obtener anotación(mi método de anotación 4. clase);

system out. >system .out .println(un método 4 . msg 2());

System.out.println (" - Información de anotación del campo Mi anotación 4);

Campo de campo = t.getClass(). getDeclaredField(" testfield ");

mi campo de anotación 4 y campo 4 = campo . obtener anotación(mi campo de anotación 4. clase);

system out . campo . commont());

system out . println(un campo . request());

}

}

Resultados de la ejecución:

- Información de anotación MyAnnotation4Class 4.

Información de anotación de clase de prueba

-Información de anotación del método Mi anotación 4.

Información de anotación del método de prueba 1

Información de anotación del método de prueba 2

-Información de anotación del campo Mi anotación 4.

Información de comentarios de las variables miembro

Real

El proceso finaliza con un código de salida de 0

Cuarto, resumen

Después de observar el proceso de prueba anterior, la anotación ya no es misteriosa. El siguiente es un resumen del uso de anotaciones personalizadas:

1. Personalice las anotaciones y preste atención al rango espaciotemporal de las anotaciones. En pocas palabras, es el objetivo de la anotación (clases, métodos y campos) y el límite de tiempo de la anotación (válido en tiempo de ejecución o código fuente).

2. Para obtener la información de anotación, debe obtener el objeto de anotación a través de la tecnología de reflexión de Java, porque no tiene otra forma de obtener el objeto de anotación.

3. Después de obtener el objeto de anotación, puede llamar al método de anotación para obtener el valor correspondiente. Utilizado por el marco base.

4. Por supuesto, una anotación tampoco puede tener miembros definidos, por lo que la anotación se convierte en un símbolo de marca.