Интерфейс ElementVisitor<R, P>
- Параметры типа:
-
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. Реализации методов по умолчанию, в свою очередь, вызовут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, 2021, 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/17/docs/api/java.compiler/javax/lang/model/element/ElementVisitor.html