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常数不被认为是一个常数,如果它是用一个求值表达式而不是一个普通的数字声明?
表达式
private static final int MIN_YEAR = Calendar.getInstance().get(Calendar.YEAR) - 1;
将只在运行时确定,但是
private static final int MIN_YEAR = 2013;
是在编译时确定的,所以允许这样做,因为注释中的值应该在编译时解析,而不是在运行时解析。