Константы этого перечислимого типа предоставляют простое классификационное разделение синтаксических мест, где аннотации могут появляться в Java-программе. Эти константы используются в мета-аннотациях java.lang.annotation.Target
для указания мест, где допустимо записывать аннотации данного типа.
Синтаксические места, где могут появляться аннотации, разделяются на контексты объявления, где аннотации применяются к объявлениям, и контексты типов, где аннотации применяются к типам, используемым в объявлениях и выражениях.
Константы ANNOTATION_TYPE
, CONSTRUCTOR
, FIELD
, LOCAL_VARIABLE
, METHOD
, PACKAGE
, PARAMETER
, TYPE
и TYPE_PARAMETER
соответствуют контекстам объявления в JLS 9.6.4.1.
Например, аннотация, тип которой мета-аннотирован с @Target(ElementType.FIELD)
, может быть записана только как модификатор для объявления поля.Константа TYPE_USE соответствует 15 контекстам типов в JLS 4.11, а также двум контекстам объявления: объявления типов (включая объявления типов аннотаций) и объявления параметров типов. Например, аннотация, тип которой мета-аннотирован с @Target(ElementType.TYPE_USE), может быть записана на типе поля (или внутри типа поля, если это вложенный, параметризованный или массивный тип), а также может появляться как модификатор для объявления класса. Константа TYPE_USE включает в себя объявления типов и параметров типов для удобства дизайнеров типовых проверяющих, которые предоставляют семантику для аннотированных типов. Например, если аннотированный тип NonNull мета-аннотирован с помощью @Target(ElementType.TYPE_USE), то @NonNull класс C {...} может быть обработан типовым проверяющим как указание того, что все переменные класса C являются непустыми, в то же время позволяя переменным других классов быть непустыми или пустыми в зависимости от того, появляется ли @NonNull в объявлении переменной.```java
public enum ElementType {
/** Объявление класса, интерфейса (включая аннотированный тип) или перечисления */
TYPE,
/** Объявление поля (включая константы перечисления) */
FIELD,
/** Объявление метода */
METHOD,
/** Объявление формального параметра */
PARAMETER,
/** Объявление конструктора */
CONSTRUCTOR,
/** Объявление локальной переменной */
LOCAL_VARIABLE,
/** Объявление аннотированного типа */
ANNOTATION_TYPE,
/** Объявление пакета */
PACKAGE,
/**
* Объявление параметра типа
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Использование типа
*
* @since 1.8
*/
TYPE_USE
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )