Spec-Zone.ru › OpenJDK 21

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

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 JavaFileObject getFileObjectOf(Element e)
Возвращает объект файла для этого элемента или null, если такого объекта нет.
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)
Возвращает происхождение данного директива модуля.
default TypeElement getOutermostTypeElement(Element e)
Возвращает самый внешний элемент типа, в котором содержится элемент, если такой элемент существует; в противном случае возвращает null.
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, в противном случае.
default boolean isCanonicalConstructor(ExecutableElement e)
Возвращает true, если исполняемый элемент может быть определён как канонический конструктор записи, false, в противном случае.
default boolean isCompactConstructor(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.
Параметры:
module - модуль, относительно которого должен произойти поиск
name - полное квалифицированное имя пакета или пустая строка для безымянного пакета
Возвращает:
указанный пакет или 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.
Параметры:
module - модуль, относительно которого должен произойти поиск
name - полное имя
Возвращает:
элемент типа с указанным именем или 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()
Возвращает все элементы модуля в текущей среде. Если модули отсутствуют, возвращается пустой набор. Одна из ситуаций, когда нет модулей, возникает, когда среда не включает модули, например, среда обработки аннотаций, настроенная для версии исходного кода без модулей.
Примечание API:
Когда среда содержит модули, могут быть возвращены как именованные модули, так и безымянные модули.
Требования к реализации:
По умолчанию этот метод возвращает пустой набор.
Возвращает:
известные элементы модулей или пустой набор, если модули отсутствуют
С:
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()

getOutermostTypeElement

default TypeElement getOutermostTypeElement(Element e)
Возвращает внешний элемент типа, в котором содержится элемент, если такой элемент существует; в противном случае возвращает null. Модули и пакеты не имеют содержащего элемента типа, и поэтому для этих типов элементов возвращается null. Класс или интерфейс верхнего уровня является своим внешним элементом типа.
Implementation Requirements:
По умолчанию реализация сначала проверяет тип аргумента. Для элементов типа PACKAGE, MODULE, и OTHER, возвращается null. Для элементов других типов проверяется, является ли элемент классом или интерфейсом верхнего уровня. Если да, то возвращается этот элемент; в противном случае используется цепочка внешних элементов, пока не будет найден класс или интерфейс верхнего уровня. Возвращается элемент для конечного класса или интерфейса верхнего уровня.
Parameters:
e - проверяемый элемент
Returns:
внешний элемент типа, в котором содержится элемент, если такой элемент существует; в противном случае возвращает null
Since:
18
См. также:
  • Element.getEnclosingElement()

getAllAnnotationMirrors

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

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

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

hides

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

overrides

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

В простейшем и типичном использовании, значение параметра 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 - если аргумент не является примитивным значением или строкой
См. также:
  • 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 в противном случае
См. Спецификацию языка 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

Spec-Zone.ru

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