Класс ModuleDescriptor
- Все реализованные интерфейсы:
Comparable<ModuleDescriptor>
public final class ModuleDescriptor extends Object implements Comparable<ModuleDescriptor>
Дескриптор модуля описывает именованный модуль и предоставляет методы для получения каждого из его компонентов. Дескриптор модуля для именованного модуля в виртуальной машине Java получается вызовом метода Module getDescriptor. Дескрипторы модулей также можно создать с помощью класса ModuleDescriptor.Builder или прочитав двоичное представление объявления модуля (module-info.class) с помощью определённых здесь методов read.
Дескриптор модуля описывает обычный, открытый или автоматический модуль. Обычные и открытые модули описывают свои зависимости, exported-packages, службы, которые они используют или предоставляют, а также другие компоненты. Обычные модули могут открывать определённые пакеты. Дескриптор открытого модуля не объявляет открытые пакеты (его метод opens возвращает пустое множество), однако при создании экземпляра в виртуальной машине Java он рассматривается так, как если бы все пакеты были открыты. Дескриптор автоматического модуля не объявляет никаких зависимостей (кроме обязательной зависимости от
java.base) и не объявляет экспортируемых или открытых пакетов. При разрешении автоматические модули обрабатываются особым образом, поэтому они читают все остальные модули в конфигурации. При создании экземпляра автоматического модуля в виртуальной машине Java он читает каждый безымянный модуль и рассматривается так, как если бы все пакеты были экспортированы и открыты.
Объекты ModuleDescriptor неизменяемы и безопасны для использования несколькими параллельно работающими потоками.
- Начиная с:
- 9
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static final class |
ModuleDescriptor.Builder |
Построитель для создания объектов ModuleDescriptor. |
static final class |
ModuleDescriptor.Exports |
Пакет, экспортируемый модулем; экспорт может быть квалифицированным или неквалифицированным. |
static enum |
ModuleDescriptor.Modifier |
Модификатор модуля. |
static final class |
ModuleDescriptor.Opens |
Пакет, открытый модулем; открытие может быть квалифицированным или неквалифицированным. |
static final class |
ModuleDescriptor.Provides |
Служба, для которой модуль предоставляет одну или несколько реализаций. |
static final class |
ModuleDescriptor.Requires |
Зависимость от модуля. |
static final class |
ModuleDescriptor.Version |
Строка версии модуля. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Set |
accessFlags() |
Возвращает набор флагов модуля. |
int |
compareTo |
Сравнивает этот дескриптор модуля с другим. |
boolean |
equals |
Проверяет, равен ли этот дескриптор модуля заданному объекту. |
Set |
exports() |
Возвращает набор объектов Exports, представляющих экспортируемые пакеты. |
int |
hashCode() |
Вычисляет хеш-код этого дескриптора модуля. |
boolean |
isAutomatic() |
Возвращает true, если это автоматический модуль. |
boolean |
isOpen() |
Возвращает true, если это открытый модуль. |
Optional |
mainClass() |
Возвращает главный класс модуля. |
Set |
modifiers() |
Возвращает набор модификаторов модуля. |
String |
name() |
Возвращает имя модуля. |
static ModuleDescriptor.Builder |
newAutomaticModule |
Создаёт построитель для создания дескриптора автоматического модуля. |
static ModuleDescriptor.Builder |
newModule |
Создаёт построитель для создания дескриптора обычного модуля. |
static ModuleDescriptor.Builder |
newModule |
Создаёт построитель для создания дескриптора модуля. |
static ModuleDescriptor.Builder |
newOpenModule |
Создаёт построитель для создания дескриптора открытого модуля. |
Set |
opens() |
Возвращает набор объектов Opens, представляющих открытые пакеты. |
Set |
packages() |
Возвращает набор всех пакетов в модуле. |
Set |
provides() |
Возвращает набор объектов Provides, представляющих службы, предоставляемые модулем. |
Optional |
rawVersion() |
Возвращает строку, содержащую версию модуля, которая может быть неразбираемой. |
static ModuleDescriptor |
read |
Читает двоичное представление объявления модуля из входного потока в виде дескриптора модуля. |
static ModuleDescriptor |
read |
Читает двоичное представление объявления модуля из входного потока в виде дескриптора модуля. |
static ModuleDescriptor |
read |
Читает двоичное представление объявления модуля из байтового буфера в виде дескриптора модуля. |
static ModuleDescriptor |
read |
Читает двоичное представление объявления модуля из байтового буфера в виде дескриптора модуля. |
Set |
requires() |
Возвращает набор объектов Requires, представляющих зависимости модуля. |
String |
toNameAndVersion() |
Возвращает строку, содержащую имя модуля и, если оно есть, его версию. |
String |
toString() |
Возвращает строку с описанием модуля. |
Set |
uses() |
Возвращает набор зависимостей от служб. |
Optional |
version() |
Возвращает версию модуля. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API планируется удалить в будущей версии. Финализация устарела и планируется к удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определённого времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определённого времени. |
Подробное описание методов
name
public String name()
Возвращает имя модуля.
- Возвращает:
- Имя модуля
modifiers
public Set<ModuleDescriptor.Modifier> modifiers()
Возвращает набор модификаторов модуля.
- Возвращает:
- Возможно, пустой неизменяемый набор модификаторов
accessFlags
public Set<AccessFlag> accessFlags()
- Возвращает:
- Возможно, пустой неизменяемый набор флагов модуля
- См. Спецификацию виртуальной машины Java:
- 4.7.25 Атрибут Module
- Начиная с:
- 20
- См. также:
isOpen
isAutomatic
requires
public Set<ModuleDescriptor.Requires> requires()
Возвращает набор объектов Requires, представляющих зависимости модуля.
Набор включает зависимость от «java.base», если имя этого модуля не равно «java.base». Если этот модуль является автоматическим, то у него нет зависимостей от каких-либо модулей, кроме «java.base».
- Возвращает:
- Возможно, пустой неизменяемый набор объектов
ModuleDescriptor.Requires
exports
public Set<ModuleDescriptor.Exports> exports()
Возвращает набор объектов Exports, представляющих экспортируемые пакеты.
Если этот модуль является автоматическим, набор экспортируемых пакетов пуст.
- Возвращает:
- Возможно, пустой неизменяемый набор экспортируемых пакетов
opens
public Set<ModuleDescriptor.Opens> opens()
Возвращает набор объектов Opens, представляющих открытые пакеты.
Если этот модуль является открытым или автоматическим, набор открытых пакетов пуст.
- Возвращает:
- Возможно, пустой неизменяемый набор открытых пакетов
uses
public Set<String> uses()
Возвращает набор зависимостей от служб.
Если этот модуль является автоматическим, набор зависимостей от служб пуст.
- Возвращает:
- Возможно, пустой неизменяемый набор двоичных имён используемых типов служб
provides
public Set<ModuleDescriptor.Provides> provides()
Возвращает набор объектов Provides, представляющих службы, предоставляемые модулем.
- Возвращает:
- Возможно, пустой неизменяемый набор служб, предоставляемых этим модулем
version
public Optional<ModuleDescriptor.Version> version()
Возвращает версию модуля.
- Возвращает:
- Версию этого модуля или пустое значение
Optional, если у модуля нет версии или версия не поддаётся разбору
rawVersion
public Optional<String> rawVersion()
Возвращает строку с версией модуля, которая, возможно, не поддаётся разбору.
- Возвращает:
- Строку, содержащую версию модуля, или пустое значение
Optional, если у модуля нет версии - См. также:
toNameAndVersion
public String toNameAndVersion()
Возвращает строку с именем модуля и, если она есть, его версией.
- Возвращает:
- Строку с именем модуля и, если она есть, его версией
mainClass
public Optional<String> mainClass()
Возвращает главный класс модуля.
- Возвращает:
- Двоичное имя главного класса модуля
packages
public Set<String> packages()
- Возвращает:
- Возможно, пустой неизменяемый набор пакетов модуля
compareTo
public int compareTo(ModuleDescriptor that)
Объекты ModuleDescriptor сравниваются по именам модулей в лексикографическом порядке. Если имена модулей совпадают, сравниваются версии модулей. При сравнении версий дескриптор модуля с версией считается большим, чем дескриптор модуля без версии. Если обе версии не поддаются разбору, лексикографически сравниваются исходные строки версий. Если имена модулей и версии совпадают (или отсутствуют в обоих дескрипторах), сравниваются наборы модификаторов. Наборы модификаторов сравниваются по двоичному значению, вычисленному для каждого набора. Если модификатор присутствует в наборе, бит в позиции, соответствующей его порядковому номеру, равен 1 в двоичном значении; в противном случае — 0. Если наборы модификаторов также равны, остальные компоненты дескрипторов модулей сравниваются способом, согласованным с equals.
- Определено в:
-
compareToв интерфейсеComparable<ModuleDescriptor> - Параметры:
-
that— дескриптор модуля для сравнения - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот дескриптор модуля меньше, равен или больше заданного дескриптора модуля
equals
public boolean equals(Object ob)
Если заданный объект не является ModuleDescriptor, этот метод возвращает false. Два дескриптора модуля равны, если равны все соответствующие компоненты.
Этот метод удовлетворяет общему контракту метода Object.equals.
hashCode
public int hashCode()
Хэш-код основан на компонентах дескриптора модуля и удовлетворяет общему контракту метода Object.hashCode.
toString
newModule
public static ModuleDescriptor.Builder newModule(String name, Set<ModuleDescriptor.Modifier> ms)
- Параметры:
-
name— имя модуля -
ms— набор модификаторов модуля - Возвращает:
- Новый построитель
- Выбрасывает:
-
IllegalArgumentException— если имя модуля равноnullили не является допустимым именем модуля либо набор модификаторов содержитAUTOMATICвместе с другими модификаторами
newModule
public static ModuleDescriptor.Builder newModule(String name)
newModule с пустым набором modifiers.- Параметры:
-
name— имя модуля - Возвращает:
- Новый построитель
- Выбрасывает:
-
IllegalArgumentException— если имя модуля равноnullили не является допустимым именем модуля
newOpenModule
public static ModuleDescriptor.Builder newOpenModule(String name)
newModule с модификатором OPEN. Построитель открытого модуля нельзя использовать для объявления открытых пакетов.
- Параметры:
-
name— имя модуля - Возвращает:
- Новый построитель для создания открытого модуля
- Выбрасывает:
-
IllegalArgumentException— если имя модуля равноnullили не является допустимым именем модуля
newAutomaticModule
public static ModuleDescriptor.Builder newAutomaticModule(String name)
newModule с модификатором AUTOMATIC. Построитель автоматического модуля нельзя использовать для объявления зависимостей от модулей или служб. Его также нельзя использовать для объявления экспортируемых или открытых пакетов.
- Параметры:
-
name— имя модуля - Возвращает:
- Новый построитель для создания автоматического модуля
- Выбрасывает:
-
IllegalArgumentException— если имя модуля равноnullили не является допустимым именем модуля - См. также:
read
public static ModuleDescriptor read(InputStream in, Supplier<Set<String>> packageFinder) throws IOException
Если дескриптор, закодированный во входном потоке, не указывает набор пакетов модуля, будет вызван packageFinder. Набор пакетов, возвращаемый packageFinder, должен включать все пакеты, которые модуль экспортирует и открывает, а также пакеты реализаций служб, предоставляемых модулем, и пакет главного класса (если модуль имеет главный класс). Если packageFinder выбрасывает UncheckedIOException, будет повторно выброшено исключение IOException, указанное в качестве его причины.
Если после дескриптора модуля имеются байты, то в зависимости от реализации они могут быть прочитаны, проигнорированы или привести к сообщению об ошибке InvalidModuleDescriptorException. Если этот метод завершается с ошибкой InvalidModuleDescriptorException или
IOException, это может произойти после чтения части, но не всех байтов из входного потока. Настоятельно рекомендуется незамедлительно закрыть и отбросить поток, если возникло исключение.
- Примечание к API:
- Параметр
packageFinderпредназначен для чтения дескрипторов модулей из устаревших форматов артефактов модулей, в которых набор пакетов не записывается непосредственно в дескрипторе. - Параметры:
-
in— входной поток -
packageFinder— поставщик, способный предоставить набор пакетов - Возвращает:
- Дескриптор модуля
- Выбрасывает:
-
InvalidModuleDescriptorException— если обнаружен недопустимый дескриптор модуля или набор пакетов, возвращённыйpackageFinder, не включает все пакеты, полученные из дескриптора модуля -
IOException— если при чтении из входного потока возникает ошибка ввода-вывода или средство поиска пакетов выбрасываетUncheckedIOException
read
public static ModuleDescriptor read(InputStream in) throws IOException
read с двумя аргументами, за исключением того, что средство поиска пакетов не используется для поиска дополнительных пакетов, если дескриптор модуля, прочитанный из потока, не указывает набор пакетов.- Параметры:
-
in— входной поток - Возвращает:
- Дескриптор модуля
- Выбрасывает:
-
InvalidModuleDescriptorException— если обнаружен недопустимый дескриптор модуля -
IOException— если при чтении из входного потока возникает ошибка ввода-вывода
read
public static ModuleDescriptor read(ByteBuffer bb, Supplier<Set<String>> packageFinder)
Если дескриптор, закодированный в байтовом буфере, не указывает набор пакетов модуля, будет вызван packageFinder. Набор пакетов, возвращаемый packageFinder, должен включать все пакеты, которые модуль экспортирует и открывает, а также пакеты реализаций служб, предоставляемых модулем, и пакет главного класса (если модуль имеет главный класс). Если packageFinder выбрасывает UncheckedIOException, будет повторно выброшено исключение IOException, указанное в качестве его причины.
Дескриптор модуля считывается из буфера начиная с индекса p, где p — значение position буфера на момент вызова этого метода. После возврата метода позиция буфера будет равна p + n, где n — количество байтов, прочитанных из буфера.
Если после дескриптора модуля имеются байты, то в зависимости от реализации они могут быть прочитаны, проигнорированы или привести к сообщению об ошибке InvalidModuleDescriptorException. Если этот метод завершается с ошибкой InvalidModuleDescriptorException, это может произойти после чтения части, но не всех байтов.
- Примечание к API:
- Параметр
packageFinderпредназначен для чтения дескрипторов модулей из устаревших форматов артефактов модулей, в которых набор пакетов не записывается непосредственно в дескрипторе. - Параметры:
-
bb— байтовый буфер -
packageFinder— поставщик, способный предоставить набор пакетов - Возвращает:
- Дескриптор модуля
- Выбрасывает:
-
InvalidModuleDescriptorException— если обнаружен недопустимый дескриптор модуля или набор пакетов, возвращённыйpackageFinder, не включает все пакеты, полученные из дескриптора модуля
read
public static ModuleDescriptor read(ByteBuffer bb)
read с двумя аргументами, за исключением того, что средство поиска пакетов не используется для поиска дополнительных пакетов, если дескриптор модуля, закодированный в буфере, не указывает набор пакетов.- Параметры:
-
bb— байтовый буфер - Возвращает:
- Дескриптор модуля
- Выбрасывает:
-
InvalidModuleDescriptorException— если обнаружен недопустимый дескриптор модуля
© 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.