Heim > Java > javaLernprogramm > Können Anmerkungsparameter in Java mit String- oder Array-Konstanten initialisiert werden?

Können Anmerkungsparameter in Java mit String- oder Array-Konstanten initialisiert werden?

Susan Sarandon
Freigeben: 2024-11-28 07:10:12
Original
714 Leute haben es durchsucht

Can Annotation Parameters in Java Be Initialized with String or Array Constants?

Initialisierung von Annotationsparametern mit String-Konstanten

Problem:

Ist es in Java möglich, Annotationsparameter mit Strings zu initialisieren? Konstanten oder Array-Konstanten? Anmerkungsparameter werden zur Kompilierzeit ausgewertet, was diese Funktionalität möglicherweise verhindern kann.

Ein Beispiel für die gewünschte Syntax ist:

@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
   ....
}
Nach dem Login kopieren

Wobei FieldValues ​​eine Schnittstelle mit einem konstanten Array FIELD1 ist.

Antwort:

Gemäß der Java-Sprachspezifikation 15.28, Konstanten zur Kompilierungszeit können nur Grundelemente und Strings sein. Dies bedeutet, dass es nicht möglich ist, eine Array-Konstante zum Initialisieren eines Anmerkungsparameters zu verwenden.

Erklärung:

Anmerkungen werden zur Kompilierungszeit ausgewertet und die Werte, die sie enthalten muss zu diesem Zeitpunkt bekannt sein. Arrays sind keine Konstanten zur Kompilierungszeit, da ihre Elemente zur Laufzeit geändert werden können. Daher ist es nicht möglich, eine Array-Konstante als Anmerkungsparameter zu verwenden.

Mögliche Lösungen:

  • Verwenden Sie ein festes Array: Definieren Sie die Array-Werte direkt im Annotationsparameter und stellen Sie sicher, dass sie während des gesamten Prozesses konstant bleiben Programm.
  • Verwenden Sie Wrapper-Klassen: Erstellen Sie eine Wrapper-Klasse, die ein nicht endgültiges Array kapselt und ständigen Zugriff auf seine Elemente bietet.
  • Verwenden Sie einen Präprozessor Tools: Nutzen Sie Präprozessor-Tools wie Annotationen oder Annotationsprozessoren, um währenddessen die notwendigen Konstanten zu generieren Kompilierung.

Hinweis:

Auch wenn das Array als final definiert ist, ist es immer noch keine Konstante zur Kompilierungszeit und seine Elemente können reflektierend geändert werden .

Das obige ist der detaillierte Inhalt vonKönnen Anmerkungsparameter in Java mit String- oder Array-Konstanten initialisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage