Элементы интерфейса
public interface Elements
Примечание о совместимости: В будущих выпусках платформы в этот интерфейс могут быть добавлены методы.
- Начиная с версии:
- 1.6
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static enum |
Elements.DocCommentKind |
Вид комментария документации. |
static enum |
Elements.Origin |
Происхождение элемента или другого элемента языковой модели. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
List |
getAllAnnotationMirrors |
Возвращает все аннотации, присутствующие на элементе, как непосредственно, так и унаследованные. |
List |
getAllMembers |
Возвращает все члены элемента типа, как унаследованные, так и объявленные непосредственно. |
default Set |
getAllModuleElements() |
Возвращает все элементы модулей в текущем окружении. |
default Set |
getAllPackageElements |
Возвращает все элементы пакетов с указанным каноническим именем. |
default Set |
getAllTypeElements |
Возвращает все элементы типов с указанным каноническим именем. |
Name |
getBinaryName |
Возвращает бинарное имя элемента типа. |
String |
getConstantExpression |
Возвращает текст константного выражения, представляющего примитивное значение или строку. |
String |
getDocComment |
Возвращает текст комментария документации («JavaDoc») элемента. |
default Elements.DocCommentKind |
getDocCommentKind |
Возвращает вид комментария документации для указанного элемента или null, если комментарий отсутствует или его вид неизвестен. |
Map |
getElementValuesWithDefaults |
Возвращает значения элементов аннотации, включая значения по умолчанию. |
default TypeElement |
getEnumConstantBody |
Возвращает тело класса константы enum, если аргумент является константой enum, объявленной с необязательным телом класса, и null в противном случае. |
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), где переданный ModuleElement является любым корневым модулем, - если на первом этапе получен пустой список, поиск наблюдаемых пакетов с заданным именем во всех модулях
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, возвращается пустое множество элементов пакетов; в противном случае возвращается множество из одного элемента, содержащие найденный элемент пакета. Если множество модулей не пусто, выполняется перебор модулей, а все результаты вызоваgetPackageElement(module, name), отличные отnull, накапливаются во множестве. Затем это множество возвращается. - Параметры:
-
name— каноническое имя - Возвращает:
- элементы пакетов или пустое множество, если пакет с таким именем не найден
- Начиная с:
- 9
- См. также:
getTypeElement
TypeElement getTypeElement(CharSequence name)
- поиск элементов типов с заданным именем, возвращаемых методом
getTypeElement(ModuleElement, CharSequence), где переданный ModuleElement является любым корневым модулем, - если на первом этапе получен пустой список, поиск наблюдаемых элементов типов с заданным именем во всех модулях
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, возвращается пустое множество элементов типов; в противном случае возвращается множество из одного элемента, содержащие найденный элемент типа. Если множество модулей не пусто, выполняется перебор модулей, а все результаты вызоваgetTypeElement(module, name), отличные отnull, накапливаются во множестве. Затем это множество возвращается. - Параметры:
-
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)
Комментарий документации элемента — это особый вид комментария, который непосредственно предшествует элементу, если не учитывать пробельные символы, аннотации и другие комментарии, которые сами не являются комментариями документации.
Существует два вида комментариев документации: основанные на традиционных комментариях и основанные на последовательности комментариев в конце строки. Для обоих видов возвращаемый текст комментария документации представляет собой обработанную форму комментария, как он записан в исходном коде, согласно приведённому ниже описанию.
Традиционный комментарий документации — это традиционный комментарий, начинающийся с «/**» и заканчивающийся отдельным «*/». (Таким образом, такой комментарий содержит не менее трёх символов «*».) Строки такого комментария обрабатываются следующим образом:
- Начальный «
/**» удаляется, как и все непосредственно следующие за ним пробелы в этой строке. Если после этого в строке не остаётся символов, она не вносит вклад в возвращаемый комментарий. - Для последующих строк комментария документации, начиная после начального «
/**», если строки начинаются с нуля или более пробельных символов, за которыми следует один или более символов «*», эти начальные пробельные символы удаляются, а также удаляются все идущие подряд символы «*», расположенные после пробелов или в начале строки. Если же строка не имеет описанного префикса, она сохраняется целиком. - Конечный «
*/» удаляется. Для строки с конечным «*/» также удаляются начальные пробелы и символы «*», как описано выше. - Затем обработанные строки объединяются, разделяются символами новой строки («
\n») и возвращаются.
Комментарий документации в конце строки — это последовательность расположенных подряд комментариев в конце строки, каждый из которых находится на отдельной строке (без учёта пробельных символов в начале строки) и начинается с «///». Строки такого комментария обрабатываются следующим образом:
- Из каждой строки удаляются начальные пробельные символы и три начальных символа «
/». - Строки сдвигаются влево путём удаления начальных пробельных символов, пока непустая строка с наименьшим количеством начальных пробельных символов не останется без них.
- Дополнительные начальные пробельные символы и все конечные пробельные символы каждой строки сохраняются.
- Затем обработанные строки объединяются, разделяются символами новой строки («
\n») и возвращаются. Если последняя строка не пустая, возвращаемое значение не будет завершаться символом новой строки.
- Примечание API:
- Комментарии документации обрабатываются стандартным doclet, используемым инструментом
javadocдля создания документации API. - Параметры:
-
e— проверяемый элемент - Возвращает:
- комментарий документации элемента или
null, если его нет - См. Спецификацию языка Java:
- 3.6 Пробельные символы
3.7 Комментарии
getDocCommentKind
default Elements.DocCommentKind getDocCommentKind(Element e)
null, если комментария нет либо его вид неизвестен.- Требования к реализации:
- Реализация этого метода по умолчанию возвращает
null. - Параметры:
-
e— проверяемый элемент - Возвращает:
- вид комментария документации для заданного элемента или
null, если комментария нет либо его вид неизвестен - Начиная с:
- 23
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— проверяемое зеркало аннотации - Возвращает:
- происхождение заданного зеркала аннотации
- См. Спецификацию языка Java:
- 9.6.3 Повторяемые интерфейсы аннотаций
9.7.5 Несколько аннотаций одного интерфейса
- Начиная с:
- 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— проверяемый элемент типа - Возвращает:
- бинарное имя элемента типа
- См. Спецификацию языка Java:
- 13.1 Форма бинарного представления
- См. также:
getPackageOf
PackageElement getPackageOf(Element e)
null. Пакет класса или интерфейса верхнего уровня — это его внешний пакет. В остальных случаях пакетом элемента является пакет его внешнего элемента.- Параметры:
-
e— проверяемый элемент - Возвращает:
- пакет элемента
getModuleOf
default ModuleElement getModuleOf(Element e)
null, для модуля пакета возвращается null. (Пакет может иметь null модуль, например, если среда не включает модули, как в случае среды обработки аннотаций, настроенной на версию исходного кода без модулей.) В остальных случаях модулем элемента является модуль пакета элемента.- Требования к реализации:
- Реализация этого метода по умолчанию возвращает
null. - Параметры:
-
e— проверяемый элемент - Возвращает:
- модуль элемента
- Начиная с:
- 9
getAllMembers
List<? extends Element> getAllMembers(TypeElement type)
- Примечание API:
- Элементы определённых видов можно выделить с помощью методов класса
ElementFilter. - Параметры:
-
type— проверяемый тип - Возвращает:
- все члены типа
- См. также:
getOutermostTypeElement
default TypeElement getOutermostTypeElement(Element e)
null. Модули и пакеты не имеют содержащего элемента типа, поэтому для элементов этих видов возвращается null. Класс или интерфейс верхнего уровня является собственным самым внешним элементом типа.- Требования к реализации:
- Реализация этого метода по умолчанию сначала проверяет вид аргумента. Для элементов видов
PACKAGE,MODULEиOTHERвозвращаетсяnull. Для элементов других видов проверяется, является ли элемент классом или интерфейсом верхнего уровня. Если да, возвращается этот элемент; в противном случае выполняется переход по цепочке внешних элементов, пока не будет найден класс или интерфейс верхнего уровня. Возвращается элемент, соответствующий найденному классу или интерфейсу верхнего уровня. - Параметры:
-
e— проверяемый элемент - Возвращает:
- самый внешний элемент типа, в который входит элемент, если такой содержащий элемент существует; в противном случае возвращает
null - Начиная с:
- 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"));
@Override, если интерфейс объявляет метод, эквивалентный по сигнатуре методу public класса java.lang.Object, такой метод интерфейса считается переопределяющим соответствующий метод Object; например: interface I {
@Override
String toString();
}
...
assert elements.overrides(elementForItoString,
elementForObjecttoString,
elements.getTypeElement("I"));
- Примечание к API:
- При определении того, переопределяет ли один метод другой, этот метод проверяет имя метода, сигнатуру, отношение подкласса и доступность, как указано в JLS 8.4.8.1. Кроме того, реализация может выполнять более строгие проверки, включая проверку модификаторов методов, типов возвращаемых значений и типов исключений, как описано в JLS 8.4.8.1 и 8.4.8.3. Обратите внимание, что такие дополнительные проверки во время компиляции не гарантируются и могут различаться в разных реализациях.
- Параметры:
-
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
getEnumConstantBody
default TypeElement getEnumConstantBody(VariableElement enumConstant)
enum, если аргумент является константой enum, объявленной с необязательным телом класса, и null в противном случае.- Требования к реализации:
- Реализация этого метода по умолчанию выбрасывает
UnsupportedOperationException, если аргумент является константойenum, и выбрасываетIllegalArgumentException, если это не так. - Параметры:
-
enumConstant— константа перечисления - Возвращает:
- тело класса константы
enum, если аргумент является константойenum, объявленной с необязательным телом класса, иnullв противном случае - Вызывает:
-
IllegalArgumentException— если аргумент не является константойenum - См. Спецификацию языка Java:
- 8.9.1 Константы перечисления
- Начиная с:
- 22
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, 2025, 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/25/docs/api/java.compiler/javax/lang/model/util/Elements.html