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.