Spec-Zone.ru › OpenJDK 24

Интерфейс 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ы: Методы посещения, предоставляемые на уровне каждого типа, так как некоторые категории типов могут иметь более одного типа.
C:
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

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

Spec-Zone.ru

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