Heim >Java >javaLernprogramm >Können Sie dynamische Werte an Java-Annotationen übergeben?

Können Sie dynamische Werte an Java-Annotationen übergeben?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 08:28:021048Durchsuche

 Can You Pass Dynamic Values to Java Annotations?

Bereitstellung dynamischer Werte für Java-Annotationen

Erster Versuch und Problem

In Java verwenden Sie Annotationen, um Metadaten bereitzustellen Klassen, Methoden und Variablen. In einigen Szenarien möchten Sie möglicherweise Anmerkungsattributen dynamische Werte zuweisen. Allerdings ist die Zuweisung eines nicht konstanten Ausdrucks, etwa des Ergebnisses eines Methodenaufrufs, zu einem Annotationsattribut generell verboten. Wie Sie erfahren haben:

@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)

Der Compiler beschwert sich:

„Der Wert für das Annotationsattribut MyInterface.aString muss ein konstanter Ausdruck sein“

Compiler-Einschränkungen

Diese Einschränkung ergibt sich aus der Auswertung der Annotationsmetadaten für RetentionPolicy.RUNTIME-Annotationen durch den Compiler zur Kompilierungszeit. Der dem Anmerkungsattribut zugewiesene Wert muss zum Zeitpunkt der Kompilierung bekannt sein.

Unterschiedliche Aufbewahrungsrichtlinien

Java bietet verschiedene Aufbewahrungsrichtlinien für Anmerkungen:

  • RetentionPolicy.SOURCE: Nach der Kompilierzeit verworfen
  • RetentionPolicy.CLASS: In Klassendateien enthalten
  • RetentionPolicy.RUNTIME: Während der gesamten Laufzeit beibehalten

Auflösung

Leider ist es aufgrund der Einschränkungen des Compilers nicht möglich, Ihr Ziel, dynamisch generierte Zeichenfolgenwerte für Annotationen bereitzustellen, zu erreichen. Weder RetentionPolicy.SOURCE noch RetentionPolicy.RUNTIME erlauben dies.

Das obige ist der detaillierte Inhalt vonKönnen Sie dynamische Werte an Java-Annotationen übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn