Элементы интерфейса
public interface Elements
Примечание по совместимости: В будущих версиях платформы в этот интерфейс могут быть добавлены методы.
- С:
- 1.6
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static enum |
Elements.Origin |
Источник элемента или другого элемента модели языка. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
List<? extends AnnotationMirror> |
getAllAnnotationMirrors |
Возвращает все аннотации, присутствующие на элементе, независимо от того, присутствуют ли они напрямую или через наследование. |
List<? extends Element> |
getAllMembers |
Возвращает всех членов элемента типа, включая унаследованные и объявленные напрямую. |
default Set<? extends ModuleElement> |
getAllModuleElements() |
Возвращает все модульные элементы в текущей среде. |
default Set<? extends PackageElement> |
getAllPackageElements |
Возвращает все элементы пакета с заданным каноническим именем. |
default Set<? extends TypeElement> |
getAllTypeElements |
Возвращает все элементы типа с заданным каноническим именем. |
Name |
getBinaryName |
Возвращает бинарное имя элемента типа. |
String |
getConstantExpression |
Возвращает текст постоянного выражения, представляющего примитивное значение или строку. |
String |
getDocComment |
Возвращает текст комментария документации ("Javadoc") элемента. |
Map<? extends ExecutableElement, |
getElementValuesWithDefaults |
Возвращает значения элементов аннотации, включая значения по умолчанию. |
default ModuleElement |
getModuleElement |
Возвращает модульный элемент по его полному квалифицированному имени. |
default ModuleElement |
getModuleOf |
Возвращает модуль элемента. |
Name |
getName |
Возвращает имя с той же последовательностью символов, что и аргумент. |
default Elements.Origin |
getOrigin |
Возвращает источник данного зеркала аннотации. |
default Elements.Origin |
getOrigin |
Возвращает источник данного элемента. |
default Elements.Origin |
getOrigin |
Возвращает источник данного директива модуля. |
PackageElement |
getPackageElement |
Возвращает пакет по его полному квалифицированному имени, если пакет однозначно определяется в среде. |
default PackageElement |
getPackageElement |
Возвращает пакет по его полному квалифицированному имени, как видно из данного модуля. |
PackageElement |
getPackageOf |
Возвращает пакет элемента. |
TypeElement |
getTypeElement |
Возвращает элемент типа по его каноническому имени, если элемент типа однозначно определяется в среде. |
default TypeElement |
getTypeElement |
Возвращает элемент типа по его каноническому имени, как видно из данного модуля. |
boolean |
hides |
Проверяет, скрывает ли один тип, метод или поле другой. |
default boolean |
isAutomaticModule |
Возвращает true, если модульный элемент является автоматическим модулем, false в противном случае. |
default boolean |
isBridge |
Возвращает true, если исполняемый элемент является мостовым методом, false в противном случае. |
boolean |
isDeprecated |
Возвращает true, если элемент устарел, false в противном случае. |
boolean |
isFunctionalInterface |
Возвращает true, если элемент типа является функциональным интерфейсом, false в противном случае. |
boolean |
overrides |
Проверяет, переопределяет ли один метод, как член данного класса или интерфейса, другой метод. |
void |
printElements |
Выводит представление элементов в указанный поток в заданном порядке. |
default RecordComponentElement |
recordComponentFor |
Возвращает компонент записи для данного аксессора. |
Подробное описание методов
getPackageElement
PackageElement getPackageElement(CharSequence name)
- находятся непустые пакеты с заданным именем, возвращаемые
getPackageElement(ModuleElement, CharSequence), где предоставленный ModuleSymbol является любым корневым модулем, - если вышеуказанный поиск не дал результатов, то происходит поиск в
all modulesнаблюдаемых пакетов с заданным именем
- Параметры:
-
name- полное квалифицированное имя пакета или пустая строка для безымянного пакета - Возвращает:
- указанный пакет или
null, если пакет нельзя однозначно определить.
getPackageElement
default PackageElement getPackageElement(ModuleElement module, CharSequence name)
- Требования к реализации:
- В реализации по умолчанию этого метода возвращается
null. - Параметры:
-
name- полное квалифицированное имя пакета или пустая строка для безымянного пакета -
module- модуль, относительно которого должен произойти поиск - Возвращает:
- указанный пакет или
null, если его невозможно найти - С:
- 9
- См. также:
getAllPackageElements
default Set<? extends PackageElement> getAllPackageElements(CharSequence name)
- Требования к реализации:
- Реализация по умолчанию этого метода вызывает
getAllModuleElementsи сохраняет результат. Если набор модулей пуст, вызываетсяgetPackageElement(name), передавая аргумент имени. ЕслиgetPackageElement(name)равенnull, возвращается пустой набор элементов пакета; в противном случае возвращается набор с единственным найденным элементом пакета. Если набор модулей не пустой, модули перебираются, и любые результаты отличные отnullвызоваgetPackageElement(module, name)накапливаются в наборе. Затем возвращается набор. - Параметры:
-
name- каноническое имя - Возвращает:
- элементы пакета или пустой набор, если пакет с указанным именем не найден
- С:
- 9
- См. также:
getTypeElement
TypeElement getTypeElement(CharSequence name)
- находятся элементы типа с заданным именем, возвращаемые
getTypeElement(ModuleElement, CharSequence), где предоставленный ModuleSymbol является любым корневым модулем, - если вышеуказанный поиск не дал результатов, то происходит поиск в
all modulesнаблюдаемых элементов типа с заданным именем
- Параметры:
-
name- каноническое имя - Возвращает:
- элемент типа с указанным именем или
null, если элемент типа нельзя однозначно определить.
getTypeElement
default TypeElement getTypeElement(ModuleElement module, CharSequence name)
- Требования к реализации:
- В реализации по умолчанию этого метода возвращается
null. - Параметры:
-
name- каноническое имя -
module- модуль, относительно которого должен произойти поиск - Возвращает:
- элемент типа с указанным именем, или
null, если он не найден - С:
- 9
- См. также:
getAllTypeElements
default Set<? extends TypeElement> getAllTypeElements(CharSequence name)
- Требования к реализации:
- Реализация по умолчанию этого метода вызывает
getAllModuleElementsи сохраняет результат. Если набор модулей пуст, вызываетсяgetTypeElement(name), передавая аргумент имени. ЕслиgetTypeElement(name)равенnull, возвращается пустой набор элементов типа; в противном случае возвращается набор с единственным найденным элементом типа. Если набор модулей не пустой, модули перебираются, и любые результаты отличные отnullвызоваgetTypeElement(module, name)накапливаются в наборе. Затем возвращается набор. - Параметры:
-
name- каноническое имя - Возвращает:
- элементы типа, или пустой набор, если тип с указанным именем не найден
- С:
- 9
- См. также:
getModuleElement
default ModuleElement getModuleElement(CharSequence name)
null. Одна из ситуаций, когда модуль не найден, заключается в том, что среда не содержит модулей, например, среда обработки аннотаций, настроенная для версии исходного кода без модулей.- Требования к реализации:
- В реализации по умолчанию этого метода возвращается
null. - Параметры:
-
name- имя или пустая строка для безымянного модуля - Возвращает:
- элемент указанного модуля или
null, если он не найден - С:
- 9
- См. также:
getAllModuleElements
default Set<? extends ModuleElement> getAllModuleElements()
- Требования к реализации:
- Реализация по умолчанию этого метода возвращает пустой набор.
- Возвращает:
- известные элементы модулей или пустой набор, если модулей нет
- С:
- 9
- См. также:
getElementValuesWithDefaults
Map<? extends ExecutableElement,? extends AnnotationValue> getElementValuesWithDefaults(AnnotationMirror a)
- Параметры:
-
a- аннотация для проверки - Возвращает:
- значения элементов аннотации, включая значения по умолчанию
- См. также:
getDocComment
String getDocComment(Element e)
Документационный комментарий элемента — это комментарий, начинающийся с "/**", заканчивающийся отдельным "*/", и непосредственно предшествующий элементу, игнорируя пробелы. Следовательно, документационный комментарий содержит как минимум три "*" символа. Возвращаемый текст документационного комментария — это обработанная форма комментария, как он выглядит в исходном коде. Ведущие "/**" и заключительные "*/" удаляются. Для строк комментария, начинающихся после начального "/**", ведущие пробелы отбрасываются, как и любые последовательные "*" символы, появляющиеся после пробелов или в начале строки. Обработанные строки затем конкатенируются вместе (включая символы конца строки) и возвращаются.
- Параметры:
-
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 Формат бинарного кода
- См. также:
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:
- все члены типа
- См. также:
getAllAnnotationMirrors
List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.
- Parameters:
-
e- проверяемый элемент - Returns:
- все аннотации элемента
- См. также:
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- если аргумент не является примитивным значением или строкой - См. также:
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)
- 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