Spec-Zone.ru › OpenJDK 25

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

Параметры типа:
R — тип возвращаемого значения методов этого посетителя. Используйте Void для посетителей, которым не нужно возвращать результаты.
P — тип дополнительного параметра методов этого посетителя. Используйте Void для посетителей, которым не нужен дополнительный параметр.
Все известные реализующие классы:
AbstractTypeVisitor14, AbstractTypeVisitor6, AbstractTypeVisitor7, AbstractTypeVisitor8, AbstractTypeVisitor9, AbstractTypeVisitorPreviewPREVIEW, SimpleTypeVisitor14, SimpleTypeVisitor6, SimpleTypeVisitor7, SimpleTypeVisitor8, SimpleTypeVisitor9, SimpleTypeVisitorPreviewPREVIEW, TypeKindVisitor14, TypeKindVisitor6, TypeKindVisitor7, TypeKindVisitor8, TypeKindVisitor9, TypeKindVisitorPreviewPREVIEW
public interface TypeVisitor<R,P>
Посетитель типов в стиле шаблона проектирования «Посетитель». Классы, реализующие этот интерфейс, используются для работы с типом, вид которого неизвестен во время компиляции. Когда посетитель передается методу accept типа, вызывается наиболее подходящий для этого типа метод visitXyz.

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

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

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

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

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

  • AbstractTypeVisitor: базовые реализации посетителей.
  • SimpleTypeVisitor: поддерживают действия по умолчанию и возвращаемое значение по умолчанию.
  • TypeKindVisitor: предоставляют методы посещения с детализацией по виду, поскольку некоторые категории типов могут иметь несколько видов.
С версии:
1.6

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

Модификатор и тип Метод Описание
default R visit(TypeMirror t)
Вспомогательный метод, эквивалентный visit(t, null).
R visit(TypeMirror t, P p)
Посещает тип.
R visitArray(ArrayType t, P p)
Посещает тип массива.
R visitDeclared(DeclaredType t, P p)
Посещает объявленный тип.
R visitError(ErrorType t, P p)
Посещает ошибочный тип.
R visitExecutable(ExecutableType t, P p)
Посещает исполняемый тип.
R visitIntersection(IntersectionType t, P p)
Посещает тип-пересечение.
R visitNoType(NoType t, P p)
Посещает экземпляр NoType.
R visitNull(NullType t, P p)
Посещает null-тип.
R visitPrimitive(PrimitiveType t, P p)
Посещает примитивный тип.
R visitTypeVariable(TypeVariable t, P p)
Посещает переменную типа.
R visitUnion(UnionType t, P p)
Посещает объединенный тип.
R visitUnknown(TypeMirror t, P p)
Посещает тип неизвестного вида.
R visitWildcard(WildcardType t, P p)
Посещает тип с подстановочным знаком.

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

visit

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

visit

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

visitPrimitive

R visitPrimitive(PrimitiveType t, P p)
Посещает примитивный тип.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitNull

R visitNull(NullType t, P p)
Посещает null-тип.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitArray

R visitArray(ArrayType t, P p)
Посещает тип массива.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitDeclared

R visitDeclared(DeclaredType t, P p)
Посещает объявленный тип.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitError

R visitError(ErrorType t, P p)
Посещает ошибочный тип.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitTypeVariable

R visitTypeVariable(TypeVariable t, P p)
Посещает переменную типа.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitWildcard

R visitWildcard(WildcardType t, P p)
Посещает тип с подстановочным знаком.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем

visitExecutable

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

visitNoType

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

visitUnknown

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

visitUnion

R visitUnion(UnionType t, P p)
Посещает объединенный тип.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем
С версии:
1.7

visitIntersection

R visitIntersection(IntersectionType t, P p)
Посещает тип-пересечение.
Параметры:
t — тип для посещения
p — параметр, заданный посетителем
Возвращает:
результат, заданный посетителем
С версии:
1.8

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.compiler/javax/lang/model/type/TypeVisitor.html

Spec-Zone.ru

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