Почему значение атрибута аннотации должно быть константным выражением?
У меня следующий фрагмент кода
@UIUnitTimeout(8*60*1000) // works
@UIUnitTimeout(TimeUnit.MINUTES.toMillis(8)) // does not work
Я знаю, что в соответствии с JLS в качестве значений атрибутов аннотации допускаются только константные выражения. Но почему? Почему это не такДостаточно ли, если типы данных совпадают? Есть ли что-нибудь, что могло бы пойти не так, как надо, если бы выражения оценивались во время выполнения? У каждой спецификации есть логическое обоснование?