Warum sollte der Wert für ein Anmerkungsattribut ein konstanter Ausdruck sein?
Ich habe den folgenden Code
@UIUnitTimeout(8*60*1000) // works
@UIUnitTimeout(TimeUnit.MINUTES.toMillis(8)) // does not work
Ich weiß, dass gemäß JLS nur konstante Ausdrücke als Werte für Annotationsattribute zulässig sind. Aber warum? Warum ist es nicht ausreichend, wenn die Datentypen übereinstimmen? Gibt es etwas, was möglicherweise schief gehen könnte, wenn die Ausdrücke zur Laufzeit ausgewertet würden? Hat jede Spezifikation eine logische Begründung?