Почему я не могу вычислить постоянный параметр аннотации? - PullRequest
4 голосов
/ 05 февраля 2012

Почему компилируется следующий код:

final String name = "works";
@Provides @Named(name) String provideAboutTitle() {
   return "ABC";
}

Но следующий код не работает (по крайней мере, с помощью компилятора Eclipse):

final String name = UUID.randomUUID().toString();
@Provides @Named(name) String provideAboutTitle() {
   return "ABC";
}

Компилятор Eclipse возвращает следующую ошибку:

The value for annotation attribute Named.value must be a constant expression

1 Ответ

4 голосов
/ 05 февраля 2012

Константное выражение, которое Eclipse требует в сообщении об ошибке, является константным выражением во время компиляции (а не только конечной переменной), и вызов метода UUID.randomUUID().toString(); необходимо оценивать во время выполнения.

Хотя вы можете записывать значения динамических аннотаций с помощью JavaAssist во время выполнения , вы потеряете возможность легко читать аннотации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...