Класс ModuleDescriptor
- Все реализованные интерфейсы:
Comparable<ModuleDescriptor>
public class ModuleDescriptor extends Object implements Comparable<ModuleDescriptor>
Описание модуля с именем и методами для получения его компонентов. Описание модуля с именем в виртуальной машине Java можно получить, вызвав метод Module's 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() |
Возвращает версию модуля. |
Подробности методов
name
public String name()
Возвращает имя модуля.
- Возвращает:
- Имя модуля
modifiers
public Set<ModuleDescriptor.Modifier> modifiers()
Возвращает набор модификаторов модуля.
- Возвращает:
- Возможный пустой неизменяемый набор модификаторов
accessFlags
public Set<AccessFlag> accessFlags()
- Возвращает:
- Возможный пустой неизменяемый набор модульных флагов
- См. Спецификацию виртуальной машины Java:
- 4.7.25 Атрибут модуля
- С:
- 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)
- Parameters:
-
name- Имя модуля -
ms- Набор модификаторов модуля - Returns:
- Новый билдер
- Throws:
-
IllegalArgumentException- Если имя модуля являетсяnullили не является допустимым именем модуля, или набор модификаторов содержитAUTOMATICвместе с другими модификаторами
newModule
public static ModuleDescriptor.Builder newModule(String name)
newModule с пустым набором modifiers.- Parameters:
-
name- Имя модуля - Returns:
- Новый билдер
- Throws:
-
IllegalArgumentException- Если имя модуля являетсяnullили не является допустимым именем модуля
newOpenModule
public static ModuleDescriptor.Builder newOpenModule(String name)
newModule с модификатором OPEN. Билдер для открытого модуля не может быть использован для объявления открытых пакетов.
- Parameters:
-
name- Имя модуля - Returns:
- Новый билдер, который создаёт открытый модуль
- Throws:
-
IllegalArgumentException- Если имя модуля являетсяnullили не является допустимым именем модуля
newAutomaticModule
public static ModuleDescriptor.Builder newAutomaticModule(String name)
newModule с модификатором AUTOMATIC. Билдер для автоматического модуля не может быть использован для объявления зависимостей модуля или сервисов. Он также не может быть использован для объявления экспортированных или открытых пакетов.
- Parameters:
-
name- Имя модуля - Returns:
- Новый билдер, который создаёт автоматический модуль
- Throws:
-
IllegalArgumentException- Если имя модуля являетсяnullили не является допустимым именем модуля - See Also:
read
public static ModuleDescriptor read(InputStream in, Supplier<Set<String>> packageFinder) throws IOException
Если описатель, закодированный в потоке ввода, не указывает набор пакетов в модуле, то будет вызван packageFinder. Набор пакетов, который возвращает packageFinder, должен включать все пакеты, которые экспортирует, открывает модуль, а также пакеты реализаций сервисов, предоставляемых модулем, и пакет главного класса (если у модуля есть главный класс). Если packageFinder вызывает UncheckedIOException, то причина IOException будет повторно выброшена.
Если после описателя модуля есть байты, то зависит от реализации, будут ли эти байты считаны, проигнорированы или сообщены как InvalidModuleDescriptorException. Если этот метод завершается сбоем с InvalidModuleDescriptorException или
IOException, то это может произойти после чтения некоторых, но не всех, байтов из потока ввода. Сильно рекомендуется немедленно закрыть и удалить поток, если возникнет исключение.
- API Note:
- Параметр
packageFinderиспользуется при чтении описателей модулей из устаревших форматов модульных артефактов, которые не записывают набор пакетов в сам описатель. - Parameters:
-
in- Поток ввода -
packageFinder- Поставщик, который может произвести набор пакетов - Returns:
- Описатель модуля
- Throws:
-
InvalidModuleDescriptorException- Если обнаружен неверный описатель модуля или набор пакетов, возвращённыйpackageFinder, не включает все пакеты, полученные из описателя модуля -
IOException- Если произошла ошибка ввода/вывода при чтении из потока ввода илиUncheckedIOExceptionбыл выброшен поисковиком пакетов
read
public static ModuleDescriptor read(InputStream in) throws IOException
read, за исключением того, что поисковик пакетов не используется для поиска дополнительных пакетов, когда описатель модуля, прочитанный из потока, не указывает набор пакетов.- Parameters:
-
in- Поток ввода - Returns:
- Описатель модуля
- Throws:
-
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 Note:
- Параметр
packageFinderиспользуется при чтении описателей модулей из устаревших форматов модульных артефактов, которые не записывают набор пакетов в сам описатель. - Parameters:
-
bb- Буфер байтов -
packageFinder- Поставщик, который может произвести набор пакетов - Returns:
- Описатель модуля
- Throws:
-
InvalidModuleDescriptorException- Если обнаружен неверный описатель модуля или набор пакетов, возвращённыйpackageFinder, не включает все пакеты, полученные из описателя модуля
read
public static ModuleDescriptor read(ByteBuffer bb)
read, за исключением того, что поисковик пакетов не используется для поиска дополнительных пакетов, когда описатель модуля, закодированный в буфере, не указывает набор пакетов.- Parameters:
-
bb- Буфер байтов - Returns:
- Описатель модуля
- Throws:
-
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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/module/ModuleDescriptor.html