Spec-Zone.ru › OpenJDK 17

Элементы интерфейса

public interface Elements
Утилитарные методы для работы с элементами программы.

Примечание по совместимости: В будущих версиях платформы в этот интерфейс могут быть добавлены методы.

С:
1.6
См. также:
  • ProcessingEnvironment.getElementUtils()

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

Модификатор и тип Интерфейс Описание
static enum  Elements.Origin
Источник элемента или другого элемента модели языка.

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

Модификатор и тип Метод Описание
List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
Возвращает все аннотации, присутствующие на элементе, независимо от того, присутствуют ли они напрямую или через наследование.
List<? extends Element> getAllMembers(TypeElement type)
Возвращает всех членов элемента типа, включая унаследованные и объявленные напрямую.
default Set<? extends ModuleElement> getAllModuleElements()
Возвращает все модульные элементы в текущей среде.
default Set<? extends PackageElement> getAllPackageElements(CharSequence name)
Возвращает все элементы пакета с заданным каноническим именем.
default Set<? extends TypeElement> getAllTypeElements(CharSequence name)
Возвращает все элементы типа с заданным каноническим именем.
Name getBinaryName(TypeElement type)
Возвращает бинарное имя элемента типа.
String getConstantExpression(Object value)
Возвращает текст постоянного выражения, представляющего примитивное значение или строку.
String getDocComment(Element e)
Возвращает текст комментария документации ("Javadoc") элемента.
Map<? extends ExecutableElement,? extends AnnotationValue> getElementValuesWithDefaults(AnnotationMirror a)
Возвращает значения элементов аннотации, включая значения по умолчанию.
default ModuleElement getModuleElement(CharSequence name)
Возвращает модульный элемент по его полному квалифицированному имени.
default ModuleElement getModuleOf(Element e)
Возвращает модуль элемента.
Name getName(CharSequence cs)
Возвращает имя с той же последовательностью символов, что и аргумент.
default Elements.Origin getOrigin(AnnotatedConstruct c, AnnotationMirror a)
Возвращает источник данного зеркала аннотации.
default Elements.Origin getOrigin(Element e)
Возвращает источник данного элемента.
default Elements.Origin getOrigin(ModuleElement m, ModuleElement.Directive directive)
Возвращает источник данного директива модуля.
PackageElement getPackageElement(CharSequence name)
Возвращает пакет по его полному квалифицированному имени, если пакет однозначно определяется в среде.
default PackageElement getPackageElement(ModuleElement module, CharSequence name)
Возвращает пакет по его полному квалифицированному имени, как видно из данного модуля.
PackageElement getPackageOf(Element e)
Возвращает пакет элемента.
TypeElement getTypeElement(CharSequence name)
Возвращает элемент типа по его каноническому имени, если элемент типа однозначно определяется в среде.
default TypeElement getTypeElement(ModuleElement module, CharSequence name)
Возвращает элемент типа по его каноническому имени, как видно из данного модуля.
boolean hides(Element hider, Element hidden)
Проверяет, скрывает ли один тип, метод или поле другой.
default boolean isAutomaticModule(ModuleElement module)
Возвращает true, если модульный элемент является автоматическим модулем, false в противном случае.
default boolean isBridge(ExecutableElement e)
Возвращает true, если исполняемый элемент является мостовым методом, false в противном случае.
boolean isDeprecated(Element e)
Возвращает true, если элемент устарел, false в противном случае.
boolean isFunctionalInterface(TypeElement type)
Возвращает true, если элемент типа является функциональным интерфейсом, false в противном случае.
boolean overrides(ExecutableElement overrider, ExecutableElement overridden, TypeElement type)
Проверяет, переопределяет ли один метод, как член данного класса или интерфейса, другой метод.
void printElements(Writer w, Element... elements)
Выводит представление элементов в указанный поток в заданном порядке.
default RecordComponentElement recordComponentFor(ExecutableElement accessor)
Возвращает компонент записи для данного аксессора.

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

getPackageElement

PackageElement getPackageElement(CharSequence name)
Возвращает пакет по его полному квалифицированному имени, если пакет однозначно определяется в среде. При работе с модулями пакеты с заданным именем ищутся в двухэтапном процессе:
  • находятся непустые пакеты с заданным именем, возвращаемые getPackageElement(ModuleElement, CharSequence), где предоставленный ModuleSymbol является любым корневым модулем,
  • если вышеуказанный поиск не дал результатов, то происходит поиск в all modules наблюдаемых пакетов с заданным именем
Если этот процесс приводит к списку с одним элементом, то возвращается этот элемент, в противном случае возвращается null.
Параметры:
name - полное квалифицированное имя пакета или пустая строка для безымянного пакета
Возвращает:
указанный пакет или null, если пакет нельзя однозначно определить.

getPackageElement

default PackageElement getPackageElement(ModuleElement module, CharSequence name)
Возвращает пакет по его полному квалифицированному имени, как видно из данного модуля.
Требования к реализации:
В реализации по умолчанию этого метода возвращается null.
Параметры:
name - полное квалифицированное имя пакета или пустая строка для безымянного пакета
module - модуль, относительно которого должен произойти поиск
Возвращает:
указанный пакет или null, если его невозможно найти
С:
9
См. также:
  • getAllPackageElements(java.lang.CharSequence)

getAllPackageElements

default Set<? extends PackageElement> getAllPackageElements(CharSequence name)
Возвращает все элементы пакетов с заданным каноническим именем. Может быть более одного элемента пакета с одинаковым каноническим именем, если элементы пакета находятся в разных модулях.
Требования к реализации:
Реализация по умолчанию этого метода вызывает getAllModuleElements и сохраняет результат. Если набор модулей пуст, вызывается getPackageElement(name), передавая аргумент имени. Если getPackageElement(name) равен null, возвращается пустой набор элементов пакета; в противном случае возвращается набор с единственным найденным элементом пакета. Если набор модулей не пустой, модули перебираются, и любые результаты отличные от null вызова getPackageElement(module, name) накапливаются в наборе. Затем возвращается набор.
Параметры:
name - каноническое имя
Возвращает:
элементы пакета или пустой набор, если пакет с указанным именем не найден
С:
9
См. также:
  • getPackageElement(ModuleElement, CharSequence)

getTypeElement

TypeElement getTypeElement(CharSequence name)
Возвращает элемент типа по его каноническому имени, если элемент типа однозначно определяется в среде. При работе с модулями элементы типа с заданным именем ищутся в двухэтапном процессе:
  • находятся элементы типа с заданным именем, возвращаемые getTypeElement(ModuleElement, CharSequence), где предоставленный ModuleSymbol является любым корневым модулем,
  • если вышеуказанный поиск не дал результатов, то происходит поиск в all modules наблюдаемых элементов типа с заданным именем
Если этот процесс приводит к списку с одним элементом, то возвращается этот элемент, в противном случае возвращается null.
Параметры:
name - каноническое имя
Возвращает:
элемент типа с указанным именем или null, если элемент типа нельзя однозначно определить.

getTypeElement

default TypeElement getTypeElement(ModuleElement module, CharSequence name)
Возвращает элемент типа по его каноническому имени, как видно из данного модуля.
Требования к реализации:
В реализации по умолчанию этого метода возвращается null.
Параметры:
name - каноническое имя
module - модуль, относительно которого должен произойти поиск
Возвращает:
элемент типа с указанным именем, или null, если он не найден
С:
9
См. также:
  • getAllTypeElements(java.lang.CharSequence)

getAllTypeElements

default Set<? extends TypeElement> getAllTypeElements(CharSequence name)
Возвращает все элементы типа с заданным каноническим именем. Может быть более одного элемента типа с одинаковым каноническим именем, если элементы типа находятся в разных модулях.
Требования к реализации:
Реализация по умолчанию этого метода вызывает getAllModuleElements и сохраняет результат. Если набор модулей пуст, вызывается getTypeElement(name), передавая аргумент имени. Если getTypeElement(name) равен null, возвращается пустой набор элементов типа; в противном случае возвращается набор с единственным найденным элементом типа. Если набор модулей не пустой, модули перебираются, и любые результаты отличные от null вызова getTypeElement(module, name) накапливаются в наборе. Затем возвращается набор.
Параметры:
name - каноническое имя
Возвращает:
элементы типа, или пустой набор, если тип с указанным именем не найден
С:
9
См. также:
  • getTypeElement(ModuleElement, CharSequence)

getModuleElement

default ModuleElement getModuleElement(CharSequence name)
Возвращает элемент модуля по его полному квалифицированному имени. Если запрашиваемый модуль не найден, возвращается null. Одна из ситуаций, когда модуль не найден, заключается в том, что среда не содержит модулей, например, среда обработки аннотаций, настроенная для версии исходного кода без модулей.
Требования к реализации:
В реализации по умолчанию этого метода возвращается null.
Параметры:
name - имя или пустая строка для безымянного модуля
Возвращает:
элемент указанного модуля или null, если он не найден
С:
9
См. также:
  • getAllModuleElements()

getAllModuleElements

default Set<? extends ModuleElement> getAllModuleElements()
Возвращает все элементы модулей в текущей среде. Если модулей нет, возвращается пустой набор. Одна из ситуаций, когда модулей нет, возникает, когда среда не включает модулей, например, среда обработки аннотаций, настроенная для версии исходного кода без модулей.
Требования к реализации:
Реализация по умолчанию этого метода возвращает пустой набор.
Возвращает:
известные элементы модулей или пустой набор, если модулей нет
С:
9
См. также:
  • getModuleElement(CharSequence)

getElementValuesWithDefaults

Map<? extends ExecutableElement,? extends AnnotationValue> getElementValuesWithDefaults(AnnotationMirror a)
Возвращает значения элементов аннотации, включая значения по умолчанию.
Параметры:
a - аннотация для проверки
Возвращает:
значения элементов аннотации, включая значения по умолчанию
См. также:
  • AnnotationMirror.getElementValues()

getDocComment

String getDocComment(Element e)
Возвращает текст документационного («Javadoc») комментария элемента.

Документационный комментарий элемента — это комментарий, начинающийся с "/**", заканчивающийся отдельным "*/", и непосредственно предшествующий элементу, игнорируя пробелы. Следовательно, документационный комментарий содержит как минимум три "*" символа. Возвращаемый текст документационного комментария — это обработанная форма комментария, как он выглядит в исходном коде. Ведущие "/**" и заключительные "*/" удаляются. Для строк комментария, начинающихся после начального "/**", ведущие пробелы отбрасываются, как и любые последовательные "*" символы, появляющиеся после пробелов или в начале строки. Обработанные строки затем конкатенируются вместе (включая символы конца строки) и возвращаются.

Параметры:
e - проверяемый элемент
Возвращает:
документационный комментарий элемента или null, если его нет
См. Спецификацию языка Java:
3.6 Пробелы

isDeprecated

boolean isDeprecated(Element e)
Возвращает true, если элемент устарел, false в противном случае.
Parameters:
e - проверяемый элемент
Returns:
true, если элемент устарел, false в противном случае

getOrigin

default Elements.Origin getOrigin(Element e)
Возвращает источник данного элемента.

Обратите внимание, что если этот метод возвращает EXPLICIT, и элемент был создан из файла класса, то элемент может фактически не соответствовать явно объявленной конструкции в исходном коде. Это связано с ограничениями точности формата файла класса при сохранении информации из исходного кода. Например, по крайней мере, некоторые версии формата файла класса не сохраняют информацию о том, был ли конструктор явно объявлен программистом или был неявно объявлен как конструктор по умолчанию.

Implementation Requirements:
Реализация по умолчанию этого метода возвращает EXPLICIT.
Parameters:
e - проверяемый элемент
Returns:
источник данного элемента
Since:
9

getOrigin

default Elements.Origin getOrigin(AnnotatedConstruct c, AnnotationMirror a)
Возвращает источник данного зеркала аннотации. Зеркало аннотации является обязательным, если это неявно объявленная контейнерная аннотация, используемая для хранения повторяющихся аннотаций интерфейса повторяемой аннотации.

Обратите внимание, что если этот метод возвращает EXPLICIT, и зеркало аннотации было создано из файла класса, то элемент может фактически не соответствовать явно объявленной конструкции в исходном коде. Это связано с ограничениями точности формата файла класса при сохранении информации из исходного кода. Например, по крайней мере, некоторые версии формата файла класса не сохраняют информацию о том, была ли аннотация явно объявлена программистом или была неявно объявлена как контейнерная аннотация.

Implementation Requirements:
Реализация по умолчанию этого метода возвращает EXPLICIT.
Parameters:
c - конструкция, к которой относится зеркало аннотации
a - проверяемое зеркало аннотации
Returns:
источник данного зеркала аннотации
См. Спецификацию языка Java:
9.6.3 Типы повторяемых аннотаций
9.7.5 Множественные аннотации одного интерфейса
Since:
9

getOrigin

default Elements.Origin getOrigin(ModuleElement m, ModuleElement.Directive directive)
Возвращает источник данного директивы модуля.

Обратите внимание, что если этот метод возвращает EXPLICIT, и директива модуля была создана из файла класса, то директива модуля может фактически не соответствовать явно объявленной конструкции в исходном коде. Это связано с ограничениями точности формата файла класса при сохранении информации из исходного кода. Например, по крайней мере, некоторые версии формата файла класса не сохраняют информацию о том, была ли директива uses явно объявлена программистом или была добавлена как синтетическая конструкция.

Обратите внимание, что реализация может не быть в состоянии надежно определить статус источника директивы, если директива создана из файла класса, из-за ограничений точности формата файла класса при сохранении информации из исходного кода.

Implementation Requirements:
Реализация по умолчанию этого метода возвращает EXPLICIT.
Parameters:
m - модуль директивы
directive - проверяемая директива модуля
Returns:
источник данной директивы модуля
Since:
9

isBridge

default boolean isBridge(ExecutableElement e)
Возвращает true, если исполняемый элемент является мостовым методом, false в противном случае.
Implementation Requirements:
Реализация по умолчанию этого метода возвращает false.
Parameters:
e - проверяемый исполняемый элемент
Returns:
true, если исполняемый элемент является мостовым методом, false в противном случае
Since:
9

getBinaryName

Name getBinaryName(TypeElement type)
Возвращает бинарное имя элемента типа.
Parameters:
type - проверяемый элемент типа
Returns:
бинарное имя элемента типа
См. Спецификацию языка Java:
13.1 Формат бинарного кода
См. также:
  • TypeElement.getQualifiedName()

getPackageOf

PackageElement getPackageOf(Element e)
Возвращает пакет элемента. Пакет пакета - это сам пакет. Пакет модуля - null. Пакет класса или интерфейса верхнего уровня - это его вложенный пакет. В противном случае пакет элемента равен пакету вложенного элемента.
Parameters:
e - проверяемый элемент
Returns:
пакет элемента

getModuleOf

default ModuleElement getModuleOf(Element e)
Возвращает модуль элемента. Модуль модуля - это сам модуль. Если пакет имеет модуль в качестве своего вложенного элемента, этот модуль является модулем пакета. Если вложенный элемент пакета - null, null возвращается для модуля пакета. (Один из случаев, когда пакет может иметь null модуль, - если среда не включает модули, например, среда обработки аннотаций, настроенная для версии исходного кода без модулей.) В противном случае модуль элемента равен модулю пакета элемента.
Implementation Requirements:
Реализация по умолчанию этого метода возвращает null.
Parameters:
e - проверяемый элемент
Returns:
модуль элемента
Since:
9

getAllMembers

List<? extends Element> getAllMembers(TypeElement type)
Возвращает все члены элемента типа, унаследованные или объявленные непосредственно. Для класса результаты также включают его конструкторы, но не локальные или анонимные классы.
API Note:
Элементы определенных типов можно изолировать, используя методы в ElementFilter.
Parameters:
type - проверяемый тип
Returns:
все члены типа
См. также:
  • Element.getEnclosedElements()

getAllAnnotationMirrors

List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
Возвращает все аннотации, присутствующие на элементе, присутствующие как непосредственно, так и через наследование.

Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

Parameters:
e - проверяемый элемент
Returns:
все аннотации элемента
См. также:
  • Element.getAnnotationMirrors()
  • AnnotatedConstruct

hides

boolean hides(Element hider, Element hidden)
Проверяет, скрывает ли один тип, метод или поле другой.
Parameters:
hider - первый элемент
hidden - второй элемент
Returns:
true тогда и только тогда, когда первый элемент скрывает второй
См. Спецификацию языка Java:
8.4.8 Наследование, переопределение и скрытие

overrides

boolean overrides(ExecutableElement overrider, ExecutableElement overridden, TypeElement type)
Проверяет, переопределяет ли один метод, как член заданного класса или интерфейса, другой метод. Когда неабстрактный метод переопределяет абстрактный, считается, что первый также реализует второй.

В самом простом и типичном случае значение параметра type просто будет классом или интерфейсом, непосредственно содержащим overrider (возможно, переопределяющий метод). Например, предположим, что m1 представляет метод String.hashCode, а m2 представляет Object.hashCode. Тогда мы можем спросить, переопределяет ли m1 метод m2 внутри класса String (да, переопределяет):

assert elements.overrides(m1, m2, elements.getTypeElement("java.lang.String"));
Более интересный случай можно проиллюстрировать на следующем примере, в котором метод в классе A не переопределяет одноимённый метод в интерфейсе B:
class A { public void m() {} }
interface B { void m(); }
...
m1 = ...; // A.m
m2 = ...; // B.m
assert ! elements.overrides(m1, m2, elements.getTypeElement("A"));
Однако, если рассматривать этот метод как член третьего класса C, метод в A переопределяет метод в B:
class C extends A implements B {}
...
assert elements.overrides(m1, m2, elements.getTypeElement("C"));
Parameters:
overrider - первый метод, потенциальный переопределитель
overridden - второй метод, потенциально переопределяемый
type - класс или интерфейс, членом которого является первый метод
Returns:
true тогда и только тогда, когда первый метод переопределяет второй
См. Спецификацию языка Java:
8.4.8 Наследование, переопределение и скрытие
9.4.1 Наследование и переопределение

getConstantExpression

String getConstantExpression(Object value)
Возвращает текст константного выражения, представляющего примитивное значение или строку. Возвращаемый текст имеет формат, подходящий для представления значения в исходном коде.
Parameters:
value - примитивное значение или строка
Returns:
текст константного выражения
Throws:
IllegalArgumentException - если аргумент не является примитивным значением или строкой
См. также:
  • VariableElement.getConstantValue()

printElements

void printElements(Writer w, Element... elements)
Выводит представление элементов в заданный поток в указанном порядке. Основное назначение этого метода — для диагностики. Точный формат вывода не определён и может быть изменён.
Parameters:
w - поток, в который выводится результат
elements - элементы для вывода

getName

Name getName(CharSequence cs)
Возвращает имя с той же последовательностью символов, что и аргумент.
Parameters:
cs - последовательность символов, которую нужно вернуть в качестве имени
Returns:
имя с той же последовательностью символов, что и аргумент

isFunctionalInterface

boolean isFunctionalInterface(TypeElement type)
Возвращает true, если элемент типа является функциональным интерфейсом, false в противном случае.
Parameters:
type - элемент типа, который проверяется
Returns:
true, если элемент типа является функциональным интерфейсом, false в противном случае
См. Спецификацию языка Java:
9.8 Функциональные интерфейсы
Since:
1.8

isAutomaticModule

default boolean isAutomaticModule(ModuleElement module)
Возвращает true, если элемент модуля является автоматическим модулем, false в противном случае.
Implementation Requirements:
По умолчанию этот метод возвращает false.
Parameters:
module - элемент модуля, который проверяется
Returns:
true, если элемент модуля является автоматическим модулем, false в противном случае
См. Спецификацию языка Java:
7.7.1 Зависимости
Since:
17

recordComponentFor

default RecordComponentElement recordComponentFor(ExecutableElement accessor)
Возвращает компонент записи для данного аксессора. Возвращает null, если данный метод не является аксессором компонента записи.
Implementation Requirements:
По умолчанию этот метод проверяет, имеет ли элемент, содержащий аксессор, тип RECORD. Если это так, то все компоненты записи в элементе, содержащем аксессор, извлекаются с помощью вызова ElementFilter.recordComponentsIn(Iterable). Если аксессор хотя бы одного из извлечённых компонентов записи равен аксессору, переданному в качестве параметра этому методу, то возвращается этот компонент записи, в противном случае возвращается null.
Parameters:
accessor - метод, для которого должен быть найден компонент записи.
Returns:
компонент записи или null, если данный метод не является аксессором компонента записи
Since:
16

© 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/util/Elements.html

Spec-Zone.ru

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