Spec-Zone.ru › OpenJDK 24

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

Параметры типа:
R - тип возвращаемого значения методов этого посетителя. Используйте Void для посетителей, которым не нужно возвращать результаты.
P - тип дополнительного параметра методов этого посетителя. Используйте Void для посетителей, которым не нужен дополнительный параметр.
Все известные реализующие классы:
AbstractElementVisitor14, AbstractElementVisitor6, AbstractElementVisitor7, AbstractElementVisitor8, AbstractElementVisitor9, AbstractElementVisitorPreviewPREVIEW, ElementKindVisitor14, ElementKindVisitor6, ElementKindVisitor7, ElementKindVisitor8, ElementKindVisitor9, ElementKindVisitorPreviewPREVIEW, ElementScanner14, ElementScanner6, ElementScanner7, ElementScanner8, ElementScanner9, ElementScannerPreviewPREVIEW, SimpleElementVisitor14, SimpleElementVisitor6, SimpleElementVisitor7, SimpleElementVisitor8, SimpleElementVisitor9, SimpleElementVisitorPreviewPREVIEW
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, 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/ElementVisitor.html

Spec-Zone.ru

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