Пакет javax.lang.model.element
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
- См. также:
| Класс | Описание |
|---|---|
| AnnotationMirror | Представляет аннотацию. |
| AnnotationValue | Представляет значение элемента интерфейса аннотации. |
|
AnnotationValueVisitor<R, |
Посетитель значений элементов интерфейса аннотации, использующий вариант паттерна посетителя. |
| Element | Представляет элемент программы, такой как модуль, пакет, класс или метод. |
| ElementKind | Тип элемента. |
|
ElementVisitor<R, |
Посетитель элементов программы, в стиле паттерна посетителя. |
| ExecutableElement | Представляет метод, конструктор или инициализатор (статический или экземплярный) класса или интерфейса, включая элементы интерфейса аннотации. |
| Modifier | Представляет модификатор элемента программы, например, класса, метода или поля. |
| ModuleElement | Представляет элемент программы - модуль. |
| ModuleElement.Directive | Представляет директиву в объявлении этого модуля. |
| ModuleElement.DirectiveKind | Тип директивы. |
|
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 | Представляет поле, константу, параметр метода или конструктора, локальную переменную, переменную ресурса или параметр исключения. |
© 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/element/package-summary.html