注释属性Min.value的值必须是常量表达式

时间:2013-05-24 21:45:55

标签: java

Eclipse不断给我错误:

The value for annotation attribute Min.value must be a constant expression

但我绝对会给注释一个常数。

private static final int MIN_YEAR = Calendar.getInstance().get(Calendar.YEAR) - 1;

@Min(MIN_YEAR)

如果我将其更改为

private static final int MIN_YEAR = 2013;

非常高兴,但我不应该这样做。有没有人知道为什么或如何将我的MIN_YEAR常量视为常量,如果它是用一个已计算的表达式而不是普通数字声明的?

1 个答案:

答案 0 :(得分:9)

表达式

private static final int MIN_YEAR = Calendar.getInstance().get(Calendar.YEAR) - 1;

仅在运行时确定,但

private static final int MIN_YEAR = 2013;

是在编译时确定的,所以它是允许的,因为注释中的值应该在编译时而不是运行时解析。