Свойства по умолчанию Java-аннотации - PullRequest
7 голосов
/ 16 февраля 2011

Каковы точные значения по умолчанию для двух метааннотаций (Target и Retention) в пользовательской аннотации?

public @interface AnnotationWithDefaultProps {
}

Ответы [ 2 ]

10 голосов
/ 16 февраля 2011

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

Для Target это означает

Если метааннотация Target отсутствует в объявлении типа аннотации, объявленный тип может использоваться в любом элементе программы.

и для Retention это означает

Если в объявлении типа аннотации нет аннотации Retention, по умолчанию для политики хранения используется RetentionPolicy.CLASS.

3 голосов
/ 16 февраля 2011

Строго говоря, по умолчанию аннотации не указаны. Аннотаций просто нет.

Но для этих двух, в частности,

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/annotation/Retention.html говорит

Если в объявлении типа аннотации нет аннотации хранения, по умолчанию для политики хранения используется RetentionPolicy.CLASS.

и эквивалентно для цели,

Если метааннотация Target отсутствует в объявлении типа аннотации, объявленный тип может использоваться для любого программного элемента.

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