Konstante Werte in Java-Annotationen
In Java ist es üblich, Schnittstellen zu definieren, die Arrays von Konstanten speichern, die als Anmerkungsparameter verwendet werden sollen. Beispielsweise könnten Sie eine Schnittstelle wie diese haben:
public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; }
Beim Annotieren von Klassen möchten Sie diese Konstanten möglicherweise als Parameterwerte verwenden, etwa so:
@SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... }
Allerdings Dieser Ansatz erfordert die Angabe der Zeichenfolgenwerte in jeder Annotationsinstanz. Es wäre bequemer, die Konstanten direkt zu verwenden:
@SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... }
Leider erlaubt Java nicht die Verwendung von Arrays oder Konstanten als Annotationsparameterwerte. Dies liegt daran, dass Anmerkungen zur Kompilierungszeit aufgelöst werden und nur primitive Werte oder Zeichenfolgen als Konstanten zur Kompilierungszeit verwendet werden können.
Daher gibt es in Java keinen direkten Weg, das gewünschte Verhalten zu erreichen. Das Array in FieldValues ist nicht wirklich konstant, da seine Elemente zur Laufzeit von jedem Code geändert werden können, der Zugriff darauf hat. Um echte Unveränderlichkeit zu gewährleisten, könnten Sie erwägen, eine unveränderliche Klasse zum Umschließen der Zeichenfolgenwerte zu verwenden.
Das obige ist der detaillierte Inhalt vonKönnen Java-Annotationen Arrays oder Konstanten als Parameterwerte verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!