Пакет javax.lang.model.element
for или блока try-finally отсутствует. В частности, не моделируется какая-либо структура абстрактного синтаксического дерева (AST) программы на Java. Однако интерфейсы могут моделировать некоторые структуры, встречающиеся только внутри тел методов, такие как локальные переменные, анонимные классы и параметры исключений. Поэтому эти интерфейсы могут использоваться API для работы с AST при моделировании объявлений, найденных в телах методов единиц компиляции Java (JLS 7.3). При использовании в контексте обработки аннотаций необходимо возвращать точную модель представляемого элемента. Поскольку это языковая модель, исходный код служит эталонным (опорным) представлением рассматриваемой конструкции, а не представлением в исполняемом выходном файле, например файле класса. Исполняемый выходной файл может служить основой для создания элемента модели. Однако процесс преобразования исходного кода в исполняемый выходной файл может не позволить восстановить некоторые аспекты представления исходного кода. Например, аннотации с исходной политикой хранения невозможно восстановить из файлов классов, а файлы классов могут не содержать сведений о позициях в исходном коде. Имена параметров могут быть невосстановимы из файлов классов. Модификаторы элемента, созданного на основе файла класса, в некоторых случаях могут отличаться от модификаторов элемента того же объявления, созданного на основе исходного файла, в том числе:
-
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.
| Класс | Описание |
|---|---|
| AnnotationMirror | Представляет аннотацию. |
| AnnotationValue | Представляет значение элемента интерфейса аннотации. |
|
AnnotationValueVisitor<R, |
Посетитель значений элементов интерфейсов аннотаций, использующий вариант шаблона проектирования «Посетитель». |
| Element | Представляет программный элемент, например модуль, пакет, класс или метод. |
| ElementKind | kind элемента. |
|
ElementVisitor<R, |
Посетитель программных элементов, реализованный в стиле шаблона проектирования «Посетитель». |
| ExecutableElement | Представляет метод, конструктор или инициализатор (статический или экземпляра) класса или интерфейса, включая элементы интерфейсов аннотаций. |
| Modifier | Представляет модификатор программного элемента, например класса, метода или поля. |
| ModuleElement | Представляет программный элемент-модуль. |
| ModuleElement.Directive | Представляет директиву в объявлении этого модуля. |
| ModuleElement.DirectiveKind | kind директивы. |
|
ModuleElement.DirectiveVisitor<R, |
Посетитель директив модулей, реализованный в стиле шаблона проектирования «Посетитель». |
| ModuleElement.ExportsDirective | Экспортируемый пакет модуля. |
| ModuleElement.OpensDirective | Открытый пакет модуля. |
| ModuleElement.ProvidesDirective | Реализация службы, предоставляемой модулем. |
| ModuleElement.RequiresDirective | Зависимость модуля. |
| ModuleElement.UsesDirective | Ссылка на службу, используемую модулем. |
| Name | Неизменяемая последовательность символов. |
| NestingKind | Вид вложенности элемента типа. |
| PackageElement | Представляет программный элемент-пакет. |
| Parameterizable | Интерфейс примеси для элемента, имеющего параметры типа. |
| QualifiedNameable | Интерфейс примеси для элемента, имеющего полное имя. |
| RecordComponentElement | Представляет компонент записи. |
| TypeElement | Представляет программный элемент — класс или интерфейс. |
| TypeParameterElement | Представляет формальный параметр типа обобщённого класса, интерфейса, метода или элемента-конструктора. |
| UnknownAnnotationValueException | Указывает на обнаружение значения аннотации неизвестного вида. |
| UnknownDirectiveException | Указывает на обнаружение директивы модуля неизвестного вида. |
| UnknownElementException | Указывает на обнаружение элемента неизвестного вида. |
| VariableElement | Представляет поле, константу enum, параметр метода или конструктора, локальную переменную, переменную ресурса или параметр исключения. |
© 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/element/package-summary.html