Интерфейс 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 |
Удобный метод, эквивалентный visit(e, null). |
R |
visit |
Посещает элемент. |
R |
visitExecutable |
Посещает исполняемый элемент. |
default R |
visitModule |
Посещает элемент модуля. |
R |
visitPackage |
Посещает элемент пакета. |
default R |
visitRecordComponent |
Посещает элемент компонента записи. |
R |
visitType |
Посещает элемент типа. |
R |
visitTypeParameter |
Посещает элемент параметра типа. |
R |
visitUnknown |
Посещает элемент неизвестного типа. |
R |
visitVariable |
Посещает элемент переменной. |
Подробное описание методов
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