Элементы интерфейса
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) | Возвращает |
boolean | isDeprecated(Element e) | Возвращает |
boolean | isFunctionalInterface(TypeElement type) | Возвращает |
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