Spec-Zone.ru › OpenJDK 24

Интерфейс AnnotationValueVisitor<R,P>

Параметры типа:
R - тип возвращаемого значения методами этого посетителя
P - тип дополнительного параметра методов этого посетителя.
Все известные реализующие классы:
AbstractAnnotationValueVisitor14, AbstractAnnotationValueVisitor6, AbstractAnnotationValueVisitor7, AbstractAnnotationValueVisitor8, AbstractAnnotationValueVisitor9, AbstractAnnotationValueVisitorPreviewPREVIEW, SimpleAnnotationValueVisitor14, SimpleAnnotationValueVisitor6, SimpleAnnotationValueVisitor7, SimpleAnnotationValueVisitor8, SimpleAnnotationValueVisitor9, SimpleAnnotationValueVisitorPreviewPREVIEW
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, если это поведение не будет переопределено.

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

  • AbstractAnnotationValueVisitors: Скелетные реализации посетителей.
  • SimpleAnnotationValueVisitors: Поддержка действий по умолчанию и значения по умолчанию для возвращаемого значения.
С:
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)
Посещает значение перечисления в аннотации.
Параметры:
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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.compiler/javax/lang/model/element/AnnotationValueVisitor.html

Spec-Zone.ru

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