Heim >Java >javaLernprogramm >Können Sie dynamische Werte an Java-Annotationen übergeben?
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:
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!