El principio de la anotación de Java
java: use anotación, //www.vevb.com/article/101747.htm
¿Qué es la anotación?
Las anotaciones también se llaman metadatos, como nuestro Common @Override y @Depreced. Las anotaciones son una característica introducida en la versión JDK1.5. Se utilizan para explicar el código y pueden anotar paquetes, clases, interfaces, campos, parámetros de método, variables locales, etc. Sus funciones principales son las siguientes:
Las anotaciones generales se pueden dividir en tres categorías:
Una categoría son las anotaciones estándar que vienen con Java, incluidas @Override, @Depreced y @SupessWarnings, que se utilizan para indicar que un cierto método es reescribir, una determinada clase o método está desactualizado, y una advertencia para ignorar. Después de marcarse estas anotaciones, el compilador lo verificará.
Un tipo es la meta anotación. La meta anotación es la anotación utilizada para definir anotaciones, incluidas @Retention, @Target, @inherited, @Documented. @Retention se usa para indicar la etapa donde se retiene la anotación, @Target se usa para indicar el alcance de la anotación utilizada, @inherited se usa para indicar que la anotación puede ser heredada y @Documented se usa para indicar si para generar un documento Javadoc.
Un tipo son las anotaciones personalizadas. Puede definir anotaciones de acuerdo con sus propias necesidades y usar meta anotaciones para anotar anotaciones personalizadas.
Principio de anotación:
Veamos cómo admitir anotaciones bajo el sistema Java. Volvamos al ejemplo anterior de anotación personalizada. Para la prueba de anotación, como sigue. Si anota la clase AnnotationTest, el valor de la declaración de anotación se puede obtener a través de AnnotationTest.class.getAnnotation (Test.Class) en el tiempo de ejecución. Se puede ver en la oración anterior que obtiene la anotación de prueba de la estructura de la clase, por lo que debe ser que la anotación se agregó a la estructura de clase en algún momento.
@Test ("Test") Public Class AnnotationTest {public void test () {}}Desde el código fuente de Java hasta la clase Bytecode es realizado por el compilador. El compilador analizará el código fuente de Java y generará un archivo de clase. El compilador también procesa las anotaciones en el momento de la compilación. El compilador procesará símbolos de anotación y los conectará a la estructura de clase. Según la especificación JVM, la estructura del archivo de clase es un formato estrictamente ordenado. La única forma de adjuntar información a la estructura de clase es guardarla en los atributos de los atributos de la estructura de clase. Sabemos que para clases, campos y métodos, existen sus propias estructuras de tabla específicas en la estructura de clase, y cada una tiene sus propios atributos. Para las anotaciones, el alcance de sus funciones también puede ser diferente. Se pueden usar en clases o en campos o métodos. En este momento, el compilador almacenará la información de anotación sobre los atributos de la clase, campos y métodos en consecuencia.
Después de compilar nuestra clase AnnotationTest, se incluirá una propiedad de TimeVisiBleanNotations de ejecución de ejecución en el archivo AnnotationTest.Class correspondiente. Dado que esta anotación se aplica a la clase, esta propiedad se agrega al conjunto de atributos de la clase. Es decir, se registrará el valor del par de valor clave = prueba de la anotación de prueba. Cuando el JVM carga el Bytecode del archivo annotationTest.class, el valor de la propiedad de runtimeVisiBleanNotations se guardará en el objeto de clase de AnnotationTest, por lo que el objeto de anotación de prueba se puede obtener a través de anotationtest.class.getannotation (test.class), y luego el valor de la propiedad se obtiene a través del objeto de annotación de prueba.
Puede haber preguntas aquí, ¿cuál es el objeto de anotación de prueba? De hecho, la esencia de la anotación después de ser compilada es una interfaz que hereda la interfaz de anotación, por lo que @Test es en realidad "la prueba de interfaz pública extiende la anotación". Cuando llamamos a través de AnnotationTest.Class.GetAnnotation (Test.Class), el JDK generará un objeto que implementa la interfaz de prueba a través de proxy dinámico, y establecerá el valor de la propiedad de runtimeVisiBleanNotations en este objeto. Este objeto es un objeto de anotación de prueba. El valor de anotación se puede obtener a través de su método valor ().
El proceso completo de mecanismo de implementación de la anotación Java se muestra arriba. Su implementación requiere la cooperación del compilador y el JVM.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!