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 { .... }
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:
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!