Элементы интерфейса
public interface Elements
Примечание по совместимости: В будущих выпусках платформы в этот интерфейс могут быть добавлены методы.
- С момента:
- 1.6
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static enum |
Elements.Origin |
Происхождение элемента или другого элемента языка моделирования. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
List |
getAllAnnotationMirrors |
Возвращает все аннотации, присутствующие на элементе, как непосредственно, так и через наследование. |
List |
getAllMembers |
Возвращает всех членов элемента типа, унаследованные или объявленные непосредственно. |
default Set |
getAllModuleElements() |
Возвращает все элементы модулей в текущей среде. |
default Set |
getAllPackageElements |
Возвращает все элементы пакета с заданным полным именем. |
default Set |
getAllTypeElements |
Возвращает все элементы типа с заданным полным именем. |
Name |
getBinaryName |
Возвращает бинарное имя элемента типа. |
String |
getConstantExpression |
Возвращает текст константного выражения, представляющего примитивное значение или строку. |
String |
getDocComment |
Возвращает текст документа ("Javadoc") комментария к элементу. |
Map |
getElementValuesWithDefaults |
Возвращает значения элементов аннотации, включая значения по умолчанию. |
default JavaFileObject |
getFileObjectOf |
Возвращает объект файла для этого элемента или null, если такого объекта нет. |
default ModuleElement |
getModuleElement |
Возвращает элемент модуля по его полному имени. |
default ModuleElement |
getModuleOf |
Возвращает модуль элемента. |
Name |
getName |
Возвращает имя с той же последовательностью символов, что и аргумент. |
default Elements.Origin |
getOrigin |
Возвращает происхождение данного зеркала аннотации. |
default Elements.Origin |
getOrigin |
Возвращает происхождение данного элемента. |
default Elements.Origin |
getOrigin |
Возвращает происхождение данного директива модуля. |
default TypeElement |
getOutermostTypeElement |
Возвращает самый внешний элемент типа, в котором содержится элемент, если такой элемент существует; в противном случае возвращает
null. |
PackageElement |
getPackageElement |
Возвращает пакет по его полному имени, если пакет однозначно определяется в среде. |
default PackageElement |
getPackageElement |
Возвращает пакет по его полному имени, как видно из заданного модуля. |
PackageElement |
getPackageOf |
Возвращает пакет элемента. |
TypeElement |
getTypeElement |
Возвращает элемент типа по его полному имени, если элемент типа однозначно определяется в среде. |
default TypeElement |
getTypeElement |
Возвращает элемент типа по его полному имени, как видно из заданного модуля. |
boolean |
hides |
Проверяет, скрывает ли один тип, метод или поле другой. |
default boolean |
isAutomaticModule |
Возвращает true, если элемент модуля является автоматическим модулем, false, в противном случае. |
default boolean |
isBridge |
Возвращает true, если исполняемый элемент является методом-мостом, false, в противном случае. |
default boolean |
isCanonicalConstructor |
Возвращает true, если исполняемый элемент может быть определён как канонический конструктор записи,
false, в противном случае. |
default boolean |
isCompactConstructor |
Возвращает 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наблюдаемых пакетов с заданным именем
null.- Параметры:
-
name- полное квалифицированное имя пакета или пустая строка для безымянного пакета - Возвращает:
- указанный пакет или
null, если ни один пакет не может быть однозначно определен.
getPackageElement
default PackageElement getPackageElement(ModuleElement module, CharSequence name)
- Требования к реализации:
- По умолчанию этот метод возвращает
null. - Параметры:
-
module- модуль, относительно которого должен произойти поиск -
name- полное квалифицированное имя пакета или пустая строка для безымянного пакета - Возвращает:
- указанный пакет или
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наблюдаемых элементов типа с заданным именем
null.- Параметры:
-
name- полное имя - Возвращает:
- элемент типа с указанным именем или
null, если элемент типа не может быть однозначно определен.
getTypeElement
default TypeElement getTypeElement(ModuleElement module, CharSequence name)
- Требования к реализации:
- По умолчанию этот метод возвращает
null. - Параметры:
-
module- модуль, относительно которого должен произойти поиск -
name- полное имя - Возвращает:
- элемент типа с указанным именем или
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()
- Примечание API:
- Когда среда содержит модули, могут быть возвращены как именованные модули, так и безымянные модули.
- Требования к реализации:
- По умолчанию этот метод возвращает пустой набор.
- Возвращает:
- известные элементы модулей или пустой набор, если модули отсутствуют
- С:
- 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:
- все члены типа
- См. также:
getOutermostTypeElement
default TypeElement getOutermostTypeElement(Element e)
null. Модули и пакеты не имеют содержащего элемента типа, и поэтому для этих типов элементов возвращается null. Класс или интерфейс верхнего уровня является своим внешним элементом типа.- Implementation Requirements:
- По умолчанию реализация сначала проверяет тип аргумента. Для элементов типа
PACKAGE,MODULE, иOTHER, возвращаетсяnull. Для элементов других типов проверяется, является ли элемент классом или интерфейсом верхнего уровня. Если да, то возвращается этот элемент; в противном случае используется цепочка внешних элементов, пока не будет найден класс или интерфейс верхнего уровня. Возвращается элемент для конечного класса или интерфейса верхнего уровня. - Parameters:
-
e- проверяемый элемент - Returns:
- внешний элемент типа, в котором содержится элемент, если такой элемент существует; в противном случае возвращает
null - Since:
- 18
- См. также:
getAllAnnotationMirrors
List<? extends AnnotationMirror> getAllAnnotationMirrors(Element e)
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.
- Параметры:
-
e- проверяемый элемент - Возвращает:
- все аннотации элемента
- См. также:
hides
boolean hides(Element hider, Element hidden)
- Параметры:
-
hider- первый элемент -
hidden- второй элемент - Возвращает:
-
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"));
- Параметры:
-
overrider- первый метод, возможный переопределитель -
overridden- второй метод, потенциально переопределяемый -
type- класс или интерфейс, членом которого является первый метод - Возвращает:
-
trueтогда и только тогда, когда первый метод переопределяет второй - См. Спецификацию языка Java:
- 8.4.8 Наследование, переопределение и скрытие
9.4.1 Наследование и переопределение
getConstantExpression
String getConstantExpression(Object value)
- Параметры:
-
value- примитивное значение или строка - Возвращает:
- текст константного выражения
- Исключения:
-
IllegalArgumentException- если аргумент не является примитивным значением или строкой - См. также:
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в противном случае - См. Спецификацию языка Java:
- 9.8 Функциональные интерфейсы
- С тех пор как:
- 1.8
isAutomaticModule
default boolean isAutomaticModule(ModuleElement module)
true, если элемент модуля является автоматическим модулем, false, в противном случае.- Требования к реализации:
- Стандартная реализация этого метода возвращает
false. - Параметры:
-
module- проверяемый элемент модуля - Возвращает:
-
trueесли элемент модуля является автоматическим модулем,falseв противном случае - См. Спецификацию языка Java:
- 7.7.1 Зависимости
- С тех пор как:
- 17
recordComponentFor
default RecordComponentElement recordComponentFor(ExecutableElement accessor)
null, если данный метод не является методом доступа к компоненту записи.- Требования к реализации:
- Стандартная реализация этого метода проверяет, имеет ли элемент, содержащий доступ, тип
RECORD. Если это так, то все компоненты записи в элементе, содержащем доступ, извлекаются с помощью вызоваElementFilter.recordComponentsIn(Iterable). Если метод доступа хотя бы одного из извлечённых компонентов записи совпадает с переданным в метод параметром, возвращается этот компонент записи. В противном случае возвращаетсяnull. - Параметры:
-
accessor- метод, для которого должен быть найден компонент записи. - Возвращает:
- компонент записи или
null, если данный метод не является методом доступа к компоненту записи - С тех пор как:
- 16
isCanonicalConstructor
default boolean isCanonicalConstructor(ExecutableElement e)
true, если можно определить, что элемент исполняемого кода является каноническим конструктором записи,
false, в противном случае. Обратите внимание, что в некоторых случаях может быть недостаточно информации, чтобы определить, является ли конструктор каноническим, например, если элемент исполняемого кода построен на основе файла класса. В таких случаях возвращается false.- Требования к реализации:
- Стандартная реализация этого метода безусловно возвращает
false. - Параметры:
-
e- проверяемый элемент - Возвращает:
-
trueесли элемент исполняемого кода можно определить как канонический конструктор записи,falseв противном случае - См. Спецификацию языка Java:
- 8.10.4.1 Нормальные канонические конструкторы
- С тех пор как:
- 20
isCompactConstructor
default boolean isCompactConstructor(ExecutableElement e)
true, если можно определить, что элемент исполняемого кода является компактным конструктором записи,
false, в противном случае. По определению, компактный конструктор также является каноническим конструктором. Обратите внимание, что в некоторых случаях может быть недостаточно информации, чтобы определить, является ли конструктор компактным, например, если элемент исполняемого кода построен на основе файла класса. В таких случаях возвращается false.- Требования к реализации:
- Стандартная реализация этого метода безусловно возвращает
false. - Параметры:
-
e- проверяемый элемент - Возвращает:
-
trueесли элемент исполняемого кода можно определить как компактный конструктор записи,falseв противном случае - См. Спецификацию языка Java:
- 8.10.4.2 Компактные канонические конструкторы
- С тех пор как:
- 20
getFileObjectOf
default JavaFileObject getFileObjectOf(Element e)
null , если такого объекта файла нет. Возвращаемый объект файла предназначен для представления ссылки информации, используемой для построения элемента. Например, если во время компиляции или обработки аннотаций исходный файл класса Foo компилируется в файл класса, объект файла, возвращаемый для элемента, представляющего Foo, будет для исходного файла, а не для файла класса.
Реализация может выбрать не поддерживать функциональность этого метода, в этом случае выбрасывается UnsupportedOperationException.
В контексте обработки аннотаций возвращается значение, отличное от null, если элемент был включён в качестве части исходных данных или содержащий файл был создан во время выполнения инструмента обработки аннотаций. В противном случае может быть возвращён
null. При обработке аннотаций, если создаётся файл класса, этот файл класса может служить ссылкой для элементов.
Если у него есть объект файла, объект файла для пакета будет файлом package-info. Пакет может существовать и не иметь файла package-info, даже если пакет (неявно) создаётся во время выполнения обработки аннотаций из создания исходных или файлов класса в этом пакете. У безымянного пакета будет файл null, так как он не может быть объявлен в единице компиляции.
Если у него есть объект файла, объект файла для модуля будет файлом module-info. У безымянного модуля будет файл
null, так как он не может быть объявлен в единице компиляции. У автоматического модуля будет файл null, так как он неявно объявлен.
Если у него есть объект файла, объект файла для верхнего уровня public класса или интерфейса будет исходным или файлом класса, соответствующим этому классу или интерфейсу. В этом случае, как правило, ведущая часть имени файла будет совпадать с именем класса или интерфейса. Одна единица компиляции может определять несколько верхнеуровневых классов и интерфейсов, например, основной public класс или интерфейсы, чьё имя соответствует имени файла, и один или несколько вспомогательных классов или интерфейсов, чьи имена не соответствуют имени файла. Если исходный файл предоставляет представление ссылки вспомогательного класса или интерфейса, возвращается файл для основного класса. (Вспомогательный класс или интерфейс также может быть определён в package-info исходном файле, в этом случае возвращается файл для package-info файла.) Если файл класса предоставляет представление ссылки вспомогательного класса или интерфейса, возвращается отдельный файл класса для вспомогательного класса.
Для вложенного класса или интерфейса, если у него есть объект файла:
- если исходный файл предоставляет представление ссылки, объект файла будет объектом внешнего окружающего класса или интерфейса
- если файл класса предоставляет представление ссылки, объект файла будет объектом самого вложенного класса или интерфейса
Для других лексически вложенных элементов, таких как переменные, методы и конструкторы, если у них есть объект файла, объект файла будет объектом, связанным с окружающим элементом лексически вложенного элемента.
- Требования к реализации:
- По умолчанию реализация безусловно выбрасывает
UnsupportedOperationException. - Параметры:
-
e- элемент, для которого требуется найти объект файла - Возвращает:
- объект файла для данного элемента или
null, если такого объекта файла нет - Выбрасывает:
-
UnsupportedOperationException- если эта функциональность не поддерживается - С:
- 18
© 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/util/Elements.html