Является ли 'value' ключевым словом Java? - PullRequest
4 голосов
/ 04 июля 2011

В аннотациях это, кажется, имеет особое значение - оно позволяет пропускать имена параметров при создании аннотации.

@Foo(bar = "abc") // a normal instantiation of an annotation
@Foo("abc") // if bar were renamed 'value'

Где это задокументировано? value является ключевым словом или нет? См. Также .

Ответы [ 3 ]

6 голосов
/ 04 июля 2011

Нет, value - это , а не ключевое слово в Java. Если аннотации дается только один параметр и эта аннотация содержит только один элемент, который называется value, то имя value можно опустить при использовании аннотации. Аннотации объясняются здесь: http://download.oracle.com/javase/1.5.0/docs/guide/language/annotations.html И задокументировано в разделе 9.7 в JLS:

5 голосов
/ 04 июля 2011

Это не обычное ключевое слово, так как оно не указано в разделе 3.9 JLS .В частности, насколько мне известно, вы можете использовать его в качестве идентификатора в любом месте.

Использование value по умолчанию для значения аннотации указано в разделе 9.7 * 1007.*:

Третья форма аннотации - одноэлементная аннотация - это сокращение, предназначенное для использования с одноэлементными типами аннотаций:

SingleElementAnnotation:
   @ TypeName ( ElementValue )

Это сокращение для обычнойаннотация:

   @TypeName ( value = ElementValue )
3 голосов
/ 04 июля 2011

value - это поле по умолчанию, в которое помещаются данные аннотации. value однако не является ключевым словом java (спасибо за напоминание @gustafc).

Это задокументировано где вы ожидаете, что это будет - в официальной документации, которая гласит:

В аннотациях с одним элементом этот элемент должен иметь имя

и

Допускается опускать имя элемента и знак равенства (=) в одноэлементной аннотации, имя элемента которой равно значению

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