我认为这在Java中可能无法实现,因为注释及其参数在编译时已解决。我有一个如下的界面,
public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; }
和另一类,
@SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... }
我用注解标记了许多类,我想知道是否可以避免在每个注解中指定字符串,而宁愿使用
@SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... }
但是,这会产生诸如注释值之类的编译错误,应该将其作为数组初始化程序等。有人知道我如何使用String常量或String []常量为注释提供值吗?
15.28。常数表达式
编译时常量表达式是表示原始类型或String的值的表达式,该值不会突然完成,并且仅使用以下内容组成:
实际上,在Java中,无法保护数组中的项。在运行时,任何人都可以做FieldValues.FIELD1[0]="value3",因此,如果我们更深入地研究数组,则数组不能真正恒定。
FieldValues.FIELD1[0]="value3"