В дополнение к удержанию, есть еще три аннотации, предоставленные JDK 5, а именно цель, унаследованные и документированные.
Целевой целью является то, где используется целевая аннотация, которая определяет время используемой аннотации, то есть тип элементов программы, к которым применима аннотация. Если целевая мета -аннотация не существует в объявлении типа аннотации, объявленный тип может использоваться в любом элементе программы. Если такая метанотация существует, компилятор обеспечивает указанный предел использования.
Цель определяется следующим образом:
@Документирован@hareveration (harementpolicy.runtime) @target (elementtype.annotation_type) public @Interface Target {elementType [] value ();}Как вы можете видеть, Target имеет только один атрибут значения, а ее тип - это Enum Type ElementType. Объявление elementtype заключается в следующем:
Public Enum elementType { / ** Аннотация могут использоваться в классах, интерфейсах (включая типы аннотаций) или объявления Enum* / type, / ** Объявления поля (включая константы перечисления)* / field, / ** Объявления метода* / Метод, / ** Декларации параметров* / parameter, / ** Declarations* / Constructor, / ** Deciable: / ** Deciable_ / ** Deciable_ / ** Deciable_ / ** Deciable_ / ** Deciable_ / ** Deciable_ **. / ** Объявления типа аннотации* / annotation_type, / ** Объявления пакета* / пакет}Задокументированные аннотации указывают, добавляется ли информация о аннотации в документ при создании Javadoc. Если аннотация использует @documentiend при объявлении, информация о аннотации будет добавлена в Javadoc при создании Javadoc. Заявление о аннотации выглядит следующим образом:
@Документирован@hareveration (value = runtime) @target (value = annotation_type) // Укажите, что это аннотация может использоваться только при объявлении аннотации, то есть мета -аннотации public @Interface Doccorded {}Унаследованная аннотация также является мета -аннотацией, а объявление заключается в следующем:
@Документирован@hareveration (value = runtime) @target (value = annotation_type) public @Interface унаследован {}Унаследованные аннотации указывают, будут ли аннотации унаследовать подклассы, и по умолчанию не унаследовано. Когда аннотация объявлена, используется аннотация @Inhyted, тогда аннотация будет унаследована подклассом класса с использованием аннотации.