Почему значение атрибута аннотации должно быть константным выражением?

У меня следующий фрагмент кода

 @UIUnitTimeout(8*60*1000) // works
 @UIUnitTimeout(TimeUnit.MINUTES.toMillis(8)) // does not work

Я знаю, что в соответствии с JLS в качестве значений атрибутов аннотации допускаются только константные выражения. Но почему? Почему это не такДостаточно ли, если типы данных совпадают? Есть ли что-нибудь, что могло бы пойти не так, как надо, если бы выражения оценивались во время выполнения? У каждой спецификации есть логическое обоснование?

Ответы на вопрос(2)

Ваш ответ на вопрос