Spec-Zone.ru › OpenJDK 17

Пакет javax.lang.model.element

package javax.lang.model.element
Интерфейсы, используемые для моделирования элементов языка программирования Java. Термин «элемент» в этом пакете используется для обозначения программных элементов, объявленных сущностей, составляющих программу. Элементы включают классы, интерфейсы, методы, конструкторы и поля. Интерфейсы в этом пакете не моделируют структуру программы внутри тела метода; например, нет представления о цикле for или блоке try-finally. Однако интерфейсы могут моделировать некоторые структуры, встречающиеся только внутри тел методов, такие как локальные переменные и анонимные классы.

При использовании в контексте обработки аннотаций необходимо возвращать точную модель представляемого элемента. Поскольку это языковая модель, исходный код предоставляет эталонное (ссылочное) представление рассматриваемой конструкции, а не представление в исполняемом выходе, например, в файле класса. Исполняемый вывод может служить основой для создания моделируемого элемента. Однако процесс перевода исходного кода в исполняемый вывод может не позволять восстанавливать некоторые аспекты представления исходного кода. Например, аннотации с source retention нельзя восстановить из файлов классов, а файлы классов могут не содержать информацию о позиции исходного кода. Имена параметров могут быть не восстановимы из файлов классов. Модификаторы модификаторов на элементе, созданном из файла класса, в некоторых случаях могут отличаться от элемента для того же объявления, созданного из исходного файла, включая:

  • strictfp для класса или интерфейса
  • final для параметра
  • protected, private, и static для классов и интерфейсов
Некоторые элементы, которые обязательны, могут не быть помечены как таковые при создании из файлов классов. Кроме того, синтетические конструкции в файле класса, такие как методы-аксессоры, используемые для реализации вложенных классов, и мосты методов, используемые для реализации ковариативных возвращаемых значений, являются артефактами перевода, строго находящимися за пределами этой модели. Однако при работе с файлами классов полезно иметь возможность работать с такими элементами, отфильтровывая их при необходимости.

Во время обработки аннотаций необходимо работать с неполными или ошибочными программами; однако гарантий о характере полученной модели меньше. Если исходный код не является синтаксически корректным или содержит другую невосстанавливаемую ошибку, которая не может быть устранена путем генерации новых классов или интерфейсов, модель может быть или не быть предоставлена в качестве проблемы качества реализации. Если программа синтаксически верна, но ошибочна каким-то другим образом, любая возвращенная модель должна иметь не меньше информации, чем если бы все тела методов в программе были заменены на "throw new RuntimeException();". Если программа ссылается на отсутствующий класс или интерфейс Xyz, возвращенная модель должна содержать не меньше информации, чем если бы объявление класса или интерфейса Xyz предполагалось "class Xyz {}", "interface Xyz {}", "enum Xyz {}", "@interface Xyz {}", или "record Xyz {}". Если программа ссылается на отсутствующий класс или интерфейс Xyz<K1, ... ,Kn>, возвращенная модель должна содержать не меньше информации, чем если бы объявление Xyz предполагалось "class Xyz<T1, ... ,Tn> {}" или "interface Xyz<T1, ... ,Tn> {}"

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

Если не указано иное, методы в этом пакете будут выбрасывать NullPointerException при получении аргумента null.

См. Спецификацию языка Java:
6.1 Объявления
7.4 Объявления пакетов
7.7 Объявления модулей
8.1 Объявления классов
8.3 Объявления полей
8.4 Объявления методов
8.5 Объявления вложенных классов и интерфейсов
8.8 Объявления конструкторов
9.1 Объявления интерфейсов
С тех пор как:
1.6
См. также:
  • Elements
Пакет Описание
javax.lang.model
Типы и иерархии пакетов, составляющие модель языка Java, модель объявлений и типов языка программирования Java.
javax.lang.model.type
Интерфейсы, используемые для моделирования типов языка программирования Java.
javax.lang.model.util
Утилиты для обработки элементов программы и типов.
Класс Описание
AnnotationMirror
Представляет аннотацию.
AnnotationValue
Представляет значение элемента интерфейса аннотации.
AnnotationValueVisitor<R,P>
Посетитель значений элементов интерфейса аннотации, использующий вариант шаблона проектирования посетитель.
Element
Представляет элемент программы, такой как модуль, пакет, класс или метод.
ElementKind
Тип элемента.
ElementVisitor<R,P>
Посетитель элементов программы, в стиле шаблона проектирования посетитель.
ExecutableElement
Представляет метод, конструктор или инициализатор (статический или экземпляра) класса или интерфейса, включая элементы типа аннотации.
Modifier
Представляет модификатор элемента программы, такого как класс, метод или поле.
ModuleElement
Представляет элемент программы модуль.
ModuleElement.Directive
Представляет директиву в объявлении этого модуля.
ModuleElement.DirectiveKind
Тип директивы.
ModuleElement.DirectiveVisitor<R,P>
Посетитель модульных директив, в стиле шаблона проектирования посетитель.
ModuleElement.ExportsDirective
Экспортируемый пакет модуля.
ModuleElement.OpensDirective
Открытый пакет модуля.
ModuleElement.ProvidesDirective
Реализация сервиса, предоставляемого модулем.
ModuleElement.RequiresDirective
Зависимость модуля.
ModuleElement.UsesDirective
Ссылка на сервис, используемый модулем.
Name
Неизменяемая последовательность символов.
NestingKind
Тип вложенности элемента типа.
PackageElement
Представляет элемент программы пакет.
Parameterizable
Интерфейс-миксин для элемента, имеющего параметры типа.
QualifiedNameable
Интерфейс-миксин для элемента, имеющего полное имя.
RecordComponentElement
Представляет компонент записи.
TypeElement
Представляет элемент программы класс или интерфейс.
TypeParameterElement
Представляет формальный параметр типа обобщенного класса, интерфейса, метода или конструктора.
UnknownAnnotationValueException
Указывает, что был обнаружен неизвестный тип значения аннотации.
UnknownDirectiveException
Указывает, что была обнаружена неизвестная директива модуля.
UnknownElementException
Указывает, что был обнаружен неизвестный тип элемента.
VariableElement
Представляет поле, константу, параметр метода или конструктора, локальную переменную, переменную ресурса или параметр исключения.

© 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/package-summary.html

Spec-Zone.ru

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