从 Java 常量提供注释值
在 Java 中使用注释时,通常使用静态确定的值来初始化注释参数。然而,当尝试从字符串数组常量提供值时,会出现一个常见的挑战。
问题:
考虑以下接口和类:
public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; }
@SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... }
目标是通过利用常量数组 FieldValues.FIELD1 而不是指定
@SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... }
但是,由于注释值必须是数组初始值设定项,这种方法会导致编译错误。
解决方案:
Java 的限制将编译时常量表达式限制为原始类型和字符串。这意味着无法直接使用数组作为注解值。
此外,Java 没有提供保证数组元素不变性的机制。这是因为数组本质上是可变的,并且有人可能在运行时修改 FieldValues.FIELD1 的元素。
因此,不可能从 Java 中的常量字符串数组提供注释值。
以上是Java 注解可以使用常量字符串数组中的值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!