4

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 常量是用评估表达式而不是普通数字声明的,那么有谁知道为什么或如何不将其视为常量?

4

1 回答 1

9

表达方式

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

将仅在运行时确定,但

private static final int MIN_YEAR = 2013;

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

于 2013-05-24T21:48:38.270 回答