Класс ModuleDescriptor
- Все реализуемые интерфейсы:
Comparable<ModuleDescriptor>
public class ModuleDescriptor extends Object implements Comparable<ModuleDescriptor>
Описание модуля задаёт имя модуля и методы для получения его компонентов. Описание модуля с заданным именем в виртуальной машине Java можно получить, вызвав метод Module's getDescriptor. Определения модулей также можно создавать, используя класс ModuleDescriptor.Builder или считывая двоичную форму объявления модуля (module-info.class) с помощью методов read, определённых здесь.
Описание модуля описывает обычный, открытый или автоматический модуль. Обычные и открытые модули описывают свои зависимости, экспорт, сервисы, которые они используют или предоставляют, и другие компоненты. Обычные модули могут открыть определённые пакеты. Описание открытого модуля не объявляет открытых пакетов (его метод 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 Virtual Machine:
- 4.7.25 Атрибут модуля
- С:
- 20
- См. также:
isOpen
public boolean isOpen()
Возвращает true , если это открытый модуль.
Этот метод эквивалентен проверке, содержит ли набор modifiers модификатор OPEN.
- Возвращает:
-
true, если это открытый модуль
isAutomatic
public boolean isAutomatic()
Возвращает true , если это автоматический модуль.
Этот метод эквивалентен проверке, содержит ли набор modifiers модификатор AUTOMATIC.
- Возвращает:
-
true, если это автоматический модуль
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.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
ob- объект, с которым следует сравнить этот объект - Возвращает:
-
true, если и только если данный объект является дескриптором модуля, равным этому дескриптору модуля - См. также:
hashCode
public int hashCode()
Хэш-код основан на компонентах дескриптора модуля и удовлетворяет общему контракту метода Object.hashCode.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Значение хэш-кода для этого дескриптора модуля
- См. также:
toString
public String toString()
Возвращает строку, описывающую модуль.
- Переопределяет:
-
toStringв классеObject - Возвращает:
- Строка, описывающая модуль
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. Билдер для открытого модуля не может использоваться для объявления открытых пакетов.
- 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, 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.base/java/lang/module/ModuleDescriptor.html