Пакет javax.lang.model.element
for или блоке try-finally. Конкретно, нет модели абстрактного синтаксического дерева (AST) структуры программы Java. Однако, интерфейсы могут моделировать некоторые структуры, встречающиеся только внутри тел методов, такие как локальные переменные, анонимные классы и параметры исключений. Следовательно, эти интерфейсы могут быть использованы API AST для моделирования объявлений, найденных в телах методов единиц компиляции Java (JLS 7.3). При использовании в контексте обработки аннотаций должна возвращаться точная модель представляемого элемента. Поскольку это модель языка, исходный код предоставляет опорное (эталонное) представление рассматриваемого конструкта, а не представление в исполняемом выводе, таком как файл класса. Исполняемый вывод может служить основой для создания моделирующего элемента. Однако процесс преобразования исходного кода в исполняемый вывод может не позволить восстановить некоторые аспекты представления исходного кода. Например, аннотации с 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 аргумент.
| Класс | Описание |
|---|---|
| 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://download.java.net/java/early_access/jdk24/docs/api/java.compiler/javax/lang/model/element/package-summary.html