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

public interface Elements

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

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

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

Вложенные классы

Модификатор и тип Интерфейс Описание
static class  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 type)

Возвращает модуль элемента.

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 type)

Возвращает пакет элемента.

TypeElement getTypeElement​(CharSequence name)

Возвращает элемент типа по его каноническому имени, если элемент типа уникален в среде.

default TypeElement getTypeElement​(ModuleElement module, CharSequence name)

Возвращает элемент типа по его каноническому имени, как видно из указанного модуля.

boolean hides​(Element hider, Element hidden)

Проверяет, скрывает ли один тип, метод или поле другой.

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)

Выводит представление элементов в указанный поток в указанном порядке.

Методы

getPackageElement

PackageElement getPackageElement(CharSequence name)

Возвращает пакет по его полному имени, если пакет уникален в среде. При работе с модулями ищутся все модули в графе модулей, соответствующие пакетам.

Параметры:
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)

Возвращает элемент типа по его каноническому имени, если элемент типа уникален в среде. При работе с модулями все модули в графе модулей проверяются на соответствие элементам типа.

Параметры:
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, если его нет

isDeprecated

boolean isDeprecated(Element e)

Возвращает true, если элемент устарел, false в противном случае.

Параметры:
e - проверяемый элемент
Возвращает:
true если элемент устарел, false в противном случае

getOrigin

default Elements.Origin getOrigin(Element e)

Возвращает источник данного элемента.

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

Требования к реализации:
По умолчанию этот метод возвращает EXPLICIT.
Параметры:
e - проверяемый элемент
Возвращает:
источник данного элемента
С:
9

getOrigin

default Elements.Origin getOrigin(AnnotatedConstruct c,
                                  AnnotationMirror a)

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

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

Требования к реализации:
По умолчанию этот метод возвращает EXPLICIT.
Параметры:
c - конструкцию, которую изменяет зеркало аннотаций
a - зеркало аннотаций, которое проверяется
Возвращает:
источник данного зеркала аннотаций
С тех пор как:
9

getOrigin

default Elements.Origin getOrigin(ModuleElement m,
                                  ModuleElement.Directive directive)

Возвращает источник заданного директивы модуля.

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

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

Требования к реализации:
По умолчанию этот метод возвращает EXPLICIT.
Параметры:
m - модуль директивы
directive - проверяемая директива модуля
Возвращает:
источник заданной директивы
С тех пор как:
9

isBridge

default boolean isBridge(ExecutableElement e)

Возвращает true , если исполняемый элемент является методом-мостом, false в противном случае.

Требования к реализации:
По умолчанию этот метод возвращает false.
Параметры:
e - проверяемый исполняемый элемент
Возвращает:
true , если исполняемый элемент является методом-мостом, false в противном случае
С тех пор как:
9

getBinaryName

Name getBinaryName(TypeElement type)

Возвращает бинарное имя элемента типа.

Параметры:
type - проверяемый элемент типа
Возвращает:
бинарное имя
См. также:
TypeElement.getQualifiedName()

getPackageOf

PackageElement getPackageOf(Element type)

Возвращает пакет элемента. Пакет пакета — это сам пакет.

Параметры:
type - проверяемый элемент
Возвращает:
пакет элемента

getModuleOf

default ModuleElement getModuleOf(Element type)

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

Требования к реализации:
По умолчанию этот метод возвращает null.
Параметры:
type - проверяемый элемент
Возвращает:
модуль элемента
С тех пор как:
9

getAllMembers

List<? extends Element> getAllMembers(TypeElement type)

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

Примечание API:
Элементы определенных типов могут быть изолированы с помощью методов в ElementFilter.
Параметры:
type - проверяемый тип
Возвращает:
все члены типа
См. также:
Element.getEnclosedElements()

getAllAnnotationMirrors

List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)

Возвращает все аннотации, присутствующие на элементе, присутствующие напрямую или через наследование.

Параметры:
e - проверяемый элемент
Возвращает:
все аннотации элемента
См. также:
Element.getAnnotationMirrors(), AnnotatedConstruct

hides

boolean hides(Element hider,
              Element hidden)

Проверяет, скрывает ли один тип, метод или поле другой.

Параметры:
hider - первый элемент
hidden - второй элемент
Возвращает:
true тогда и только тогда, когда первый элемент скрывает второй

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"));
Параметры:
overrider - первый метод, возможный переопределитель
overridden - второй метод, потенциально переопределяемый
type - тип, членом которого является первый метод
Возвращает:
true тогда и только тогда, когда первый метод переопределяет второй

getConstantExpression

String getConstantExpression(Object value)

Возвращает текст постоянного выражения, представляющего примитивное значение или строку. Возвращаемый текст имеет формат, подходящий для представления значения в исходном коде.

Параметры:
value - примитивное значение или строка
Возвращает:
текст константного выражения
Исключения:
IllegalArgumentException - если аргумент не является примитивным значением или строкой
См. также:
VariableElement.getConstantValue()

printElements

void printElements(Writer w,
                   Element... elements)

Выводит представление элементов в заданный поток в указанном порядке. Основное назначение этого метода — диагностика. Точный формат вывода не задан и может меняться.

Параметры:
w - поток для вывода
elements - элементы для вывода

getName

Name getName(CharSequence cs)

Возвращает имя с той же последовательностью символов, что и аргумент.

Параметры:
cs - последовательность символов, которую нужно вернуть в виде имени
Возвращает:
имя с той же последовательностью символов, что и аргумент

isFunctionalInterface

boolean isFunctionalInterface(TypeElement type)

Возвращает true если элемент типа является функциональным интерфейсом, false в противном случае.

Параметры:
type - проверяемый элемент типа
Возвращает:
true если элемент является функциональным интерфейсом, false в противном случае
С тех пор как:
1.8

© 1993, 2020, 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/11/docs/api/java.compiler/javax/lang/model/util/Elements.html

Spec-Zone .ru
спецификации, руководства, описания, API