@Retention
Es handelt sich um eine der Meta-Annotationen in Java, mit der die Aufbewahrungsrichtlinie für Anmerkungen angegeben wird. Meta-Annotationen sind Annotationen, die dazu dienen, andere Annotationen zu kommentieren. @Retention
Ihr Zweck besteht darin, dem Compiler mitzuteilen, wie Annotationen verarbeitet werden sollen.
@Retention
Es gibt drei Werte, nämlich RetentionPolicy.SOURCE
, RetentionPolicy.CLASS
und RetentionPolicy.RUNTIME
.
RetentionPolicy.SOURCE
::
- Anmerkungen bleiben nur auf Quellcodeebene erhalten und werden zur Kompilierungszeit verworfen . Dies bedeutet, dass die Anmerkungsinformationen nicht in der kompilierten Klassendatei (.class-Datei) enthalten sind. Diese Aufbewahrungsrichtlinie wird normalerweise beim Schreiben von Tools zur Kompilierungszeit verwendet.
@Retention(RetentionPolicy.SOURCE) public @interface MyAnnotation { // annotation details }
RetentionPolicy.CLASS
::
- Anmerkungen bleiben zur Kompilierungszeit erhalten und werden in die kompilierte Klassendatei aufgenommen, aber zur Laufzeit verworfen . Dies ist die Standardaufbewahrungsrichtlinie.
@Retention(RetentionPolicy.CLASS) public @interface MyAnnotation { // annotation details }
RetentionPolicy.RUNTIME
::
-
Anmerkungen bleiben zur Kompilierungszeit und zur Laufzeit erhalten , sodass Anmerkungsinformationen zur Laufzeit durch Reflektion abgerufen werden können. Diese Aufbewahrungsrichtlinie wird normalerweise für benutzerdefinierte Anmerkungen verwendet, die zur Laufzeit verarbeitet werden müssen .
@Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { // annotation details }
Wenn Sie Anmerkungen anpassen, entscheiden Sie sich normalerweise
RetentionPolicy.RUNTIME
dafür, dass die Anmerkungsinformationen durch Reflektion zur Laufzeit abgerufen werden können. Zum Beispiel:@Retention(RetentionPolicy.RUNTIME) public @interface RpcApiEntry { // annotation details }
Wählen Sie bei der Verarbeitung benutzerdefinierter Anmerkungen eine geeignete Aufbewahrungsstrategie basierend auf den spezifischen Anforderungen.