La Red de Conocimientos Pedagógicos - Currículum vitae - Una breve descripción de la anotación @Retention

Una breve descripción de la anotación @Retention

@Retention se utiliza para modificar anotaciones. Define el período de tiempo que se retiene la anotación. Es la anotación de la anotación y es una de las metaanotaciones de JAVA.

Las anotaciones tienen diferentes ciclos de vida, que se pueden dividir en 3 categorías según los diferentes ciclos de vida.

Estos tres ciclos de vida corresponden a tres estados respectivamente.

La función de @Retention es describir el ciclo de vida de las anotaciones.

Primero, eche un vistazo al código fuente de @Retention:

Tiene un solo valor de atributo, el valor del objeto de RetentionPolicy.

Este es un tipo de enumeración con solo 3 valores FUENTE, CLASE y TIEMPO DE EJECUCIÓN. @Retention se basa en estos tres valores para describir el ciclo de vida de las anotaciones.

Como se puede ver en la tabla anterior, @Deprecated está marcado con RetentionPolicy.RUNTIME y el procesador puede obtener los atributos de @Deprecated a través de la reflexión.

Pero mirando el código fuente, @Deprecated no tiene atributos, por lo que no es necesario que el procesador refleje el comportamiento de obtención de atributos.

Entonces tuve una idea: ¿por qué se debe usar RUNTIME, por qué no usar SOURCE o CLASS?

@Deprecated es una advertencia de que algunos métodos o clases marcados son obsoletos o peligrosos y que existen mejores alternativas, pero los métodos o clases marcados aún se pueden usar.

Es suficiente que el compilador verifique como @Override y @SupressWarnings. ¿Por qué es necesario configurarlo en RUNTIME?

Con este fin, consulté stackoverflow y esta es la respuesta más votada:

“Algunos marcos o herramientas pueden crear instancias de objetos para usarlos

Por ejemplo. Muchos editores de UI de JavaBean crean instancias de beans e interactúan con ellos mientras los usuarios manipulan la UI que están diseñando. Al utilizar la anotación @Deprecated en tiempo de ejecución, herramientas como admiten el uso de métodos, eventos y atributos. p> Perdóneme por ser estúpido, no puedo pensar en un ejemplo para verificar esta oración. Si puede explicar esta oración o tiene una idea mejor, hágamelo saber.