Spec-Zone.ru › OpenJDK 21

Интерфейс AnnotationValueVisitorP>

Параметры типа:
R - тип возвращаемого значения методов этого посетителя
P - тип дополнительного параметра методов этого посетителя.
Все известные реализующие классы:
AbstractAnnotationValueVisitor14, AbstractAnnotationValueVisitor6, AbstractAnnotationValueVisitor7, AbstractAnnotationValueVisitor8, AbstractAnnotationValueVisitor9, SimpleAnnotationValueVisitor14, SimpleAnnotationValueVisitor6, SimpleAnnotationValueVisitor7, SimpleAnnotationValueVisitor8, SimpleAnnotationValueVisitor9
public interface AnnotationValueVisitor<R,P>
Посетитель значений элементов аннотаций, использующий вариант паттерна проектирования «посетитель». В отличие от стандартного посетителя, который отправляет запросы на основе конкретного типа члена иерархии типов, этот посетитель отправляет запросы на основе типа хранимых данных; нет отдельных подклассов для хранения, например, значений boolean и значений int. Классы, реализующие этот интерфейс, используются для работы со значением, когда тип этого значения неизвестен на этапе компиляции. Когда посетитель передаётся методу accept значения, вызывается соответствующий метод visitXyz, применимый к этому значению.

Классы, реализующие этот интерфейс, могут или не могут выбрасывать NullPointerException если дополнительный параметр p имеет значение null; см. документацию реализующего класса для получения подробностей.

Примечание API:
ВНИМАНИЕ: Возможна добавление методов в этот интерфейс для поддержки новых, в настоящее время неизвестных, структур языка, добавленных в будущие версии языка программирования Java. Такие добавления уже произошли в другом интерфейсе посетителя в этом пакете для поддержки функций языка, добавленных после введения этого API. Классы-посетители, непосредственно реализующие этот интерфейс, могут быть несовместимы с будущими версиями платформы. Чтобы избежать этой несовместимости, реализации посетителей рекомендуют вместо этого расширять соответствующий абстрактный класс посетителя, реализующий этот интерфейс. Однако API, как правило, должен использовать этот интерфейс посетителя в качестве типа для параметров, типов возвращаемых значений и т. д., а не один из абстрактных классов.

Ожидается добавление методов для поддержки новых конструкций языка в качестве методов по умолчанию для обеспечения сильной совместимости, как это сделано для visitModule в ElementVisitor. Реализации методов по умолчанию в этом интерфейсе, в свою очередь, вызовут visitUnknown, поведение, которое будет переопределено в конкретных посетителях, поддерживающих версию источника с новой конструкцией языка.

В пакете util есть несколько семейств классов, реализующих этот интерфейс посетителя. Семьи следуют шаблону именования в стиле FooVisitorN, где N указывает версию исходного кода, для которой подходит посетитель. В частности, FooVisitorN должен обрабатывать все конструкции языка, присутствующие в версии исходного кода N. Если в версии N + 1 (или последующих версиях) новых конструкций языка нет, FooVisitorN может также обрабатывать эту более позднюю версию исходного кода; в этом случае аннотация SupportedSourceVersion в классе FooVisitorN укажет более позднюю версию. При посещении значения аннотации, представляющего конструкцию языка, введенную после версии исходного кода N, FooVisitorN выбросит UnknownAnnotationValueException, если это поведение не будет переопределено.

При выборе члена семейства посетителей для наследования, наследование последнего члена увеличивает диапазон обрабатываемых версий исходного кода. При выборе семейства посетителей для наследования следует учитывать их встроенные возможности:

  • AbstractAnnotationValueVisitorы: Скелетные реализации посетителя.
  • SimpleAnnotationValueVisitorы: Поддержка действий по умолчанию и значения возвращаемого значения по умолчанию.
С момента:
1.6

Краткое описание методов

Модификатор и тип Метод Описание
default R visit(AnnotationValue av)
Удобный метод, эквивалентный visit(av, null).
R visit(AnnotationValue av, P p)
Посещает значение аннотации.
R visitAnnotation(AnnotationMirror a, P p)
Посещает значение аннотации в аннотации.
R visitArray(List<? extends AnnotationValue> vals, P p)
Посещает значение массива в аннотации.
R visitBoolean(boolean b, P p)
Посещает значение boolean в аннотации.
R visitByte(byte b, P p)
Посещает значение byte в аннотации.
R visitChar(char c, P p)
Посещает значение char в аннотации.
R visitDouble(double d, P p)
Посещает значение double в аннотации.
R visitEnumConstant(VariableElement c, P p)
Посещает значение enum в аннотации.
R visitFloat(float f, P p)
Посещает значение float в аннотации.
R visitInt(int i, P p)
Посещает значение int в аннотации.
R visitLong(long i, P p)
Посещает значение long в аннотации.
R visitShort(short s, P p)
Посещает значение short в аннотации.
R visitString(String s, P p)
Посещает строковое значение в аннотации.
R visitType(TypeMirror t, P p)
Посещает значение типа в аннотации.
R visitUnknown(AnnotationValue av, P p)
Посещает значение неизвестного типа аннотации.

Подробное описание методов

visit

R visit(AnnotationValue av, P p)
Посещает значение аннотации.
Параметры:
av - значение для посещения
p - параметр, указанный посетителем
Возвращает:
результат, указанный посетителем

visit

default R visit(AnnotationValue av)
Удобный метод, эквивалентный visit(av, null).
Требования к реализации:
Реализация по умолчанию — visit(av, null).
Параметры:
av - значение для посещения
Возвращает:
результат, указанный посетителем

visitBoolean

R visitBoolean(boolean b, P p)
Посещает значение boolean в аннотации.
Параметры:
b - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitByte

R visitByte(byte b, P p)
Посещает значение byte в аннотации.
Параметры:
b - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitChar

R visitChar(char c, P p)
Посещает значение char в аннотации.
Параметры:
c - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitDouble

R visitDouble(double d, P p)
Посещает значение double в аннотации.
Параметры:
d - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitFloat

R visitFloat(float f, P p)
Посещает значение float в аннотации.
Параметры:
f - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitInt

R visitInt(int i, P p)
Посещает значение int в аннотации.
Параметры:
i - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitLong

R visitLong(long i, P p)
Посещает значение long в аннотации.
Параметры:
i - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitShort

R visitShort(short s, P p)
Посещает значение short в аннотации.
Параметры:
s - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitString

R visitString(String s, P p)
Посещает строковое значение в аннотации.
Параметры:
s - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitType

R visitType(TypeMirror t, P p)
Посещает значение типа в аннотации.
Параметры:
t - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitEnumConstant

R visitEnumConstant(VariableElement c, P p)
Посещает значение enum в аннотации.
Параметры:
c - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitAnnotation

R visitAnnotation(AnnotationMirror a, P p)
Посещает значение аннотации в аннотации.
Параметры:
a - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitArray

R visitArray(List<? extends AnnotationValue> vals, P p)
Посещает значение массива в аннотации.
Параметры:
vals - посещаемое значение
p - параметр, указанный посетителем
Возвращает:
результат посещения

visitUnknown

R visitUnknown(AnnotationValue av, P p)
Посещает значение неизвестного типа аннотации. Это может произойти, если язык эволюционирует и появятся новые типы значений, которые могут храниться в аннотации.
Параметры:
av - посещаемое значение неизвестного типа
p - параметр, указанный посетителем
Возвращает:
результат посещения
Исключения:
UnknownAnnotationValueException - реализация посетителя может по желанию выбросить это исключение

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.compiler/javax/lang/model/element/AnnotationValueVisitor.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API