Spec-Zone.ru › OpenJDK 21

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

Параметры типа:
R - тип возвращаемого значения методов этого посетителя. Используйте Void для посетителей, которым не нужно возвращать результаты.
P - тип дополнительного параметра методов этого посетителя. Используйте Void для посетителей, которым не нужен дополнительный параметр.
Все известные реализующие классы:
AbstractTypeVisitor14, AbstractTypeVisitor6, AbstractTypeVisitor7, AbstractTypeVisitor8, AbstractTypeVisitor9, SimpleTypeVisitor14, SimpleTypeVisitor6, SimpleTypeVisitor7, SimpleTypeVisitor8, SimpleTypeVisitor9, TypeKindVisitor14, TypeKindVisitor6, TypeKindVisitor7, TypeKindVisitor8, TypeKindVisitor9
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: Методы посещения, предоставляемые на уровне категории, так как некоторые категории типов могут иметь более одного вида.
Since:
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, 2023, 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/21/docs/api/java.compiler/javax/lang/model/type/TypeVisitor.html

Spec-Zone.ru

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