我认为这在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 []常量为注释提供值吗? 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
编译常量只能是原语和字符串:
15.28。常数表达式
编译时常量表达式是表示原始类型或String的值的表达式,该值不会突然完成,并且仅使用以下内容组成:
基本类型的文字和类型的文字 String 强制转换为基本类型并强制转换为类型 String [...]运营商[...] 用括号括起来的表达式,其包含的表达式是一个常量表达式。 引用常量变量的简单名称。 表格的限定名类型名。引用常量变量的标识符。 实际上,在Java中,无法保护数组中的项。在运行时,任何人都可以做FieldValues.FIELD1[0]="value3",因此,如果我们更深入地研究数组,则数组不能真正恒定。