假设我有一个自定义注释,如下所示:
public @interface myLimits {
int MIN_LIMIT = 400;
int stockLimit() default MIN_LIMIT;
}
我们可以将它外部化为属性文件,而不是在注释定义中对MIN_LIMIT的值进行硬编码吗?
如下所示 - 假设“min.limit”在属性文件中定义。
public @interface myLimits {
@value("${min.limit}")
int MIN_LIMIT;
int stockLimit() default MIN_LIMIT;
}
如何外部化MIN_LIMIT
而不是硬编码?
答案 0 :(得分:1)
Here's what the JLS has to say about it:
元素类型T仅与元素值V相当 如果满足下列条件之一:
- T是一个数组类型E []并且:
- V是一个 ElementValueArrayInitializer和每个ElementValueInitializer (类似于数组初始化器中的变量初始化器)在V中 与E相称。
- 或者V是一个与之相称的ElementValue 吨。
- V的类型与T分配兼容(§5.2), 此外:
- 如果T是基本类型或String,则V是常量 表达式(§15.28)。
- V不为空。
- 如果T是Class,或者是Class的调用,而V是类文字(第15.8.2节)。
- 如果T是枚举类型,则为V. 是一个枚举常量。
如果元素类型是,则是编译时错误 与ElementValue不相称。