Valeurs constantes dans les annotations Java
Il est courant en Java de définir des interfaces qui stockent des tableaux de constantes à utiliser comme paramètres d'annotation. Par exemple, vous pouvez avoir une interface comme celle-ci :
public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; }
Lors de l'annotation de classes, vous souhaiterez peut-être utiliser ces constantes comme valeurs de paramètres, quelque chose comme ceci :
@SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... }
Cependant, cette approche nécessite de spécifier les valeurs de chaîne dans chaque instance d'annotation. Il serait plus pratique d'utiliser les constantes directement :
@SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... }
Malheureusement, Java ne permet pas d'utiliser des tableaux ou des constantes comme valeurs de paramètres d'annotation. En effet, les annotations sont résolues au moment de la compilation et seules les valeurs ou chaînes primitives peuvent être utilisées comme constantes au moment de la compilation.
Par conséquent, il n'existe aucun moyen direct d'obtenir le comportement souhaité en Java. Le tableau dans FieldValues n'est pas vraiment constant, car ses éléments peuvent être modifiés au moment de l'exécution par n'importe quel code qui y a accès. Pour garantir une véritable immuabilité, vous pouvez envisager d'utiliser une classe immuable pour envelopper les valeurs de chaîne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!