Spec-Zone.ru › OpenJDK 21

Интерфейс ElementVisitorP>

Параметры типа:
R - тип возвращаемого значения методов этого посетителя. Используйте Void для посетителей, которым не нужно возвращать результаты.
P - тип дополнительного параметра методов этого посетителя. Используйте Void для посетителей, которым не нужен дополнительный параметр.
Все известные реализующие классы:
AbstractElementVisitor14, AbstractElementVisitor6, AbstractElementVisitor7, AbstractElementVisitor8, AbstractElementVisitor9, ElementKindVisitor14, ElementKindVisitor6, ElementKindVisitor7, ElementKindVisitor8, ElementKindVisitor9, ElementScanner14, ElementScanner6, ElementScanner7, ElementScanner8, ElementScanner9, SimpleElementVisitor14, SimpleElementVisitor6, SimpleElementVisitor7, SimpleElementVisitor8, SimpleElementVisitor9
public interface ElementVisitor<R,P>
Посетитель элементов программы в стиле паттерна посетитель. Классы, реализующие этот интерфейс, используются для работы с элементом, когда тип элемента неизвестен во время компиляции. Когда посетитель передается в метод accept элемента, вызывается метод visitXyz, наиболее подходящий для этого элемента.

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

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

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

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

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

  • AbstractElementVisitorы: Скелетные реализации посетителей.
  • SimpleElementVisitorы: Поддержка действий по умолчанию и значения возврата по умолчанию.
  • ElementKindVisitorы: Методы посещения, предоставляемые на уровне категории некоторых категорий элементов, поскольку некоторые категории элементов могут иметь более одного типа.
  • ElementScannerы: Сканеры — это посетители, которые просматривают элемент и элементы вложенные в него и связанные с ним.
С:
1.6

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

Модификатор и тип Метод Описание
default R visit(Element e)
Удобный метод, эквивалентный visit(e, null).
R visit(Element e, P p)
Посещает элемент.
R visitExecutable(ExecutableElement e, P p)
Посещает исполняемый элемент.
default R visitModule(ModuleElement e, P p)
Посещает элемент модуля.
R visitPackage(PackageElement e, P p)
Посещает элемент пакета.
default R visitRecordComponent(RecordComponentElement e, P p)
Посещает элемент компонента записи.
R visitType(TypeElement e, P p)
Посещает элемент типа.
R visitTypeParameter(TypeParameterElement e, P p)
Посещает элемент параметра типа.
R visitUnknown(Element e, P p)
Посещает элемент неизвестного типа.
R visitVariable(VariableElement e, P p)
Посещает элемент переменной.

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

visit

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

visit

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

visitPackage

R visitPackage(PackageElement e, P p)
Посещает элемент пакета.
Параметры:
e - элемент для посещения
p - параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitType

R visitType(TypeElement e, P p)
Посещает элемент типа.
Параметры:
e - элемент для посещения
p - параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitVariable

R visitVariable(VariableElement e, P p)
Посещает элемент переменной.
Параметры:
e - элемент для посещения
p - параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitExecutable

R visitExecutable(ExecutableElement e, P p)
Посещает исполняемый элемент.
Параметры:
e - элемент для посещения
p - параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitTypeParameter

R visitTypeParameter(TypeParameterElement e, P p)
Посещает элемент параметра типа.
Параметры:
e - элемент для посещения
p - параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitUnknown

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

visitModule

default R visitModule(ModuleElement e, P p)
Посещает элемент модуля.
Требования к реализации:
Реализация по умолчанию посещает ModuleElement, вызывая visitUnknown(e, p).
Параметры:
e - элемент для посещения
p - параметр, заданный посетителем
Возвращает:
результат, заданный посетителем
С:
9

visitRecordComponent

default R visitRecordComponent(RecordComponentElement e, P p)
Посещает элемент компоненты записи.
Требования к реализации:
Реализация по умолчанию посещает RecordComponentElement, вызывая visitUnknown(e, p).
Параметры:
e - элемент для посещения
p - параметр, заданный посетителем
Возвращает:
результат, заданный посетителем
С:
16

© 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/ElementVisitor.html

Spec-Zone.ru

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