Spec-Zone.ru › OpenJDK 25

Интерфейс TypeAnnotation

public sealed interface TypeAnnotation
Моделирует структуру type_annotation (JVMS 4.7.20). Эта модель указывает аннотированный тип в объявлении или выражении, а также часть указанного типа, которая аннотирована, в дополнение к тому, что доступно в Annotation.

Эта модель позволяет восстановить аннотацию типа или его части, если известны расположение структуры type_annotation в файле класса и определение интерфейса аннотации.

Объекты TypeAnnotation следует сравнивать с помощью метода equals.

Начиная с:
24
См. также:
  • Annotation
  • RuntimeVisibleTypeAnnotationsAttribute
  • RuntimeInvisibleTypeAnnotationsAttribute

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static interface  TypeAnnotation.CatchTarget
Указывает, что аннотация присутствует на i-м типе в объявлении параметра-исключения.
static interface  TypeAnnotation.EmptyTarget
Указывает, что аннотация присутствует либо на типе в объявлении поля, либо на возвращаемом типе метода, типе вновь созданного объекта или типе получателя метода или конструктора.
static interface  TypeAnnotation.FormalParameterTarget
Указывает, что аннотация присутствует на типе в объявлении формального параметра метода, конструктора или лямбда-выражения.
static interface  TypeAnnotation.LocalVarTarget
Указывает, что аннотация присутствует на типе в объявлении локальной переменной, в том числе переменной, объявленной как ресурс в операторе try-with-resources.
static interface  TypeAnnotation.LocalVarTargetInfo
Указывает диапазон смещений в массиве байткода, в пределах которого локальная переменная имеет значение, а также индекс в массиве локальных переменных текущего фрейма, по которому можно найти эту локальную переменную.
static interface  TypeAnnotation.OffsetTarget
Указывает, что аннотация присутствует либо на типе в выражении instanceof или new, либо на типе перед :: в выражении ссылки на метод.
static interface  TypeAnnotation.SupertypeTarget
Указывает, что аннотация присутствует на типе в предложении extends или implements объявления класса или интерфейса.
static interface  TypeAnnotation.TargetInfo
Указывает, какой тип в объявлении или выражении аннотируется.
static enum  TypeAnnotation.TargetType
Вид цели, на которой присутствует аннотация, как определено в JVMS 4.7.20.1.
static interface  TypeAnnotation.ThrowsTarget
Указывает, что аннотация присутствует на i-м типе в предложении throws объявления метода или конструктора.
static interface  TypeAnnotation.TypeArgumentTarget
Указывает, что аннотация присутствует либо на i-м типе в выражении приведения типа, либо на i-м аргументе типа в явном списке аргументов типа для любого из следующих элементов: выражения new, оператора явного вызова конструктора, выражения вызова метода или выражения ссылки на метод.
static interface  TypeAnnotation.TypeParameterBoundTarget
Указывает, что аннотация присутствует на j-й границе i-го параметра типа в объявлении обобщённого класса, интерфейса, метода или конструктора.
static interface  TypeAnnotation.TypeParameterTarget
Указывает, что аннотация присутствует в объявлении i-го параметра типа обобщённого класса, обобщённого интерфейса, обобщённого метода или обобщённого конструктора.
static interface  TypeAnnotation.TypePathComponent
JVMS: структура Type_path определяет, какая часть типа аннотирована, как указано в JVMS 4.7.20.2

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

Модификатор и тип Метод Описание
Annotation annotation()
Возвращает аннотацию, применённую к части, указанной в targetPath().
static TypeAnnotation of(TypeAnnotation.TargetInfo targetInfo, List<TypeAnnotation.TypePathComponent> targetPath, Annotation annotation)
Возвращает структуру type_annotation.
TypeAnnotation.TargetInfo targetInfo()
Возвращает сведения, точно описывающие, какой тип в объявлении или выражении аннотирован.
List<TypeAnnotation.TypePathComponent> targetPath()
Возвращает часть типа, указанного в targetInfo(), которая аннотирована.

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

targetInfo

TypeAnnotation.TargetInfo targetInfo()
Возвращает сведения, точно описывающие, какой тип в объявлении или выражении аннотирован. Здесь моделируются элементы target_type и target_info.
Возвращает:
сведения, точно описывающие, какой тип в объявлении или выражении аннотирован

targetPath

List<TypeAnnotation.TypePathComponent> targetPath()
Возвращает часть типа, указанного в targetInfo(), которая аннотирована.
Возвращает:
часть типа, указанного в targetInfo(), которая аннотирована

annotation

Annotation annotation()
Возвращает аннотацию, применённую к части, указанной в targetPath(). Здесь моделируются интерфейс аннотации и набор пар «элемент — значение» — подмножество структуры type_annotation, совпадающее со структурой annotation.
Возвращает:
аннотацию, применённую к части, указанной в targetPath()

of

static TypeAnnotation of(TypeAnnotation.TargetInfo targetInfo, List<TypeAnnotation.TypePathComponent> targetPath, Annotation annotation)
Возвращает структуру type_annotation.
Параметры:
targetInfo — какой тип в объявлении или выражении аннотирован
targetPath — какая часть типа аннотирована
annotation — аннотация
Возвращает:
структуру type_annotation

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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.base/java/lang/classfile/TypeAnnotation.html

Spec-Zone.ru

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