我想在键字符串上使用注释来配置该键的属性的初始值。如,
@NodeProperty(initialValue = "bar") static final String "FOO";
其他代码稍后处理注释,如果键“FOO”尚不存在,则将值“bar”的键“FOO”添加到特定键值存储区。
我的注释声明是:
@Retention(RetentionPolicy.RUNTIME)
@interface NodeProperty {
long initialValue(); // I want to accept Strings, ints, byte[], etc. here.
}
但是,我提前不知道initialValue
的类型。我想接受所有原语,字符串和这些的数组。
关于如何实现这一目标的任何想法?
修改
不幸的是,听起来重载注释参数目前是不可能的。以下答案包含各种解决方法。
答案 0 :(得分:2)
接受单一类型(可能是String
)并使用类型转换将其从您到达的字段中获取。类似于Commons BeanUtils或XWork允许注册类型转换器从字符串形式值到任意Java类的方式。
答案 1 :(得分:1)
您可以为不同类型设置不同的属性,然后检查哪个属性在代码中有值。因此,您可能拥有initialInt,initialString,initial(...)而不是initialValue。很麻烦,但我能想到的另一种方法是始终使用String值,然后从中解析特定类型。
另一个选择可能是撤销您的声明。是否有注释中的键,以及作为注释变量的值?