Класс 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 неизменяемы и безопасны для использования в нескольких потоках.
- Since:
- 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 |
Строка версии модуля. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
compareTo |
Сравнивает это описание модуля с другим. |
boolean |
equals |
Проверяет это описание модуля на равенство с заданным объектом. |
Set<ModuleDescriptor.Exports> |
exports() |
Возвращает набор объектов Exports, представляющих экспортированные пакеты. |
int |
hashCode() |
Вычисляет хэш-код для этого описания модуля. |
boolean |
isAutomatic() |
Возвращает true, если это автоматический модуль. |
boolean |
isOpen() |
Возвращает true, если это открытый модуль. |
Optional<String> |
mainClass() |
Возвращает главный класс модуля. |
Set<ModuleDescriptor.Modifier> |
modifiers() |
Возвращает набор модификаторов модуля. |
String |
name() |
Возвращает имя модуля. |
static ModuleDescriptor.Builder |
newAutomaticModule |
Создаёт построитель для создания описания автоматического модуля. |
static ModuleDescriptor.Builder |
newModule |
Создаёт построитель для создания описания обычного модуля. |
static ModuleDescriptor.Builder |
newModule |
Создаёт построитель для создания описания модуля. |
static ModuleDescriptor.Builder |
newOpenModule |
Создаёт построитель для создания описания открытого модуля. |
Set<ModuleDescriptor.Opens> |
opens() |
Возвращает набор объектов Opens, представляющих открытые пакеты. |
Set<String> |
packages() |
Возвращает набор пакетов в модуле. |
Set<ModuleDescriptor.Provides> |
provides() |
Возвращает набор объектов Provides, представляющих сервисы, предоставляемые модулем. |
Optional<String> |
rawVersion() |
Возвращает строку с, возможно, неразборчивой версией модуля. |
static ModuleDescriptor |
read |
Считывает двоичную форму объявления модуля из потока ввода как описание модуля. |
static ModuleDescriptor |
read |
Считывает двоичную форму объявления модуля из потока ввода как описание модуля. |
static ModuleDescriptor |
read |
Считывает двоичную форму объявления модуля из буфера байтов как описание модуля. |
static ModuleDescriptor |
read |
Считывает двоичную форму объявления модуля из буфера байтов как описание модуля. |
Set<ModuleDescriptor.Requires> |
requires() |
Возвращает набор объектов Requires, представляющих зависимости модуля. |
String |
toNameAndVersion() |
Возвращает строку, содержащую имя модуля и, при наличии, его версию. |
String |
toString() |
Возвращает строку, описывающую модуль. |
Set<String> |
uses() |
Возвращает набор зависимостей от сервисов. |
Optional<ModuleDescriptor.Version> |
version() |
Возвращает версию модуля. |
Подробное описание методов
name
public String name()
Возвращает имя модуля.
- Возвращает:
- Имя модуля
modifiers
public Set<ModuleDescriptor.Modifier> modifiers()
Возвращает набор модификаторов модуля.
- Возвращает:
- Возможный пустой неизменяемый набор модификаторов
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, 2021, 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/17/docs/api/java.base/java/lang/module/ModuleDescriptor.html