Spec-Zone.ru › OpenJDK 27

Класс ModuleDescriptor

java.lang.Object
java.lang.module.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
См. также:
  • Module

Краткое описание вложенных классов

Модификатор и тип Класс Описание
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<AccessFlag> accessFlags()
Возвращает набор флагов модуля.
int compareTo(ModuleDescriptor that)
Сравнивает этот дескриптор модуля с другим.
boolean equals(Object ob)
Проверяет, равен ли этот дескриптор модуля заданному объекту.
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(String name)
Создаёт построитель для создания дескриптора автоматического модуля.
static ModuleDescriptor.Builder newModule(String name)
Создаёт построитель для создания дескриптора обычного модуля.
static ModuleDescriptor.Builder newModule(String name, Set<ModuleDescriptor.Modifier> ms)
Создаёт построитель для создания дескриптора модуля.
static ModuleDescriptor.Builder newOpenModule(String name)
Создаёт построитель для создания дескриптора открытого модуля.
Set<ModuleDescriptor.Opens> opens()
Возвращает набор объектов Opens, представляющих открытые пакеты.
Set<String> packages()
Возвращает набор всех пакетов в модуле.
Set<ModuleDescriptor.Provides> provides()
Возвращает набор объектов Provides, представляющих службы, предоставляемые модулем.
Optional<String> rawVersion()
Возвращает строку, содержащую версию модуля, которая может быть неразбираемой.
static ModuleDescriptor read(InputStream in)
Читает двоичное представление объявления модуля из входного потока в виде дескриптора модуля.
static ModuleDescriptor read(InputStream in, Supplier<Set<String>> packageFinder)
Читает двоичное представление объявления модуля из входного потока в виде дескриптора модуля.
static ModuleDescriptor read(ByteBuffer bb)
Читает двоичное представление объявления модуля из байтового буфера в виде дескриптора модуля.
static ModuleDescriptor read(ByteBuffer bb, Supplier<Set<String>> packageFinder)
Читает двоичное представление объявления модуля из байтового буфера в виде дескриптора модуля.
Set<ModuleDescriptor.Requires> requires()
Возвращает набор объектов Requires, представляющих зависимости модуля.
String toNameAndVersion()
Возвращает строку, содержащую имя модуля и, если оно есть, его версию.
String toString()
Возвращает строку с описанием модуля.
Set<String> uses()
Возвращает набор зависимостей от служб.
Optional<ModuleDescriptor.Version> 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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определённого времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определённого времени.

Подробное описание методов

name

public String name()

Возвращает имя модуля.

Возвращает:
Имя модуля

modifiers

public Set<ModuleDescriptor.Modifier> modifiers()

Возвращает набор модификаторов модуля.

Возвращает:
Возможно, пустой неизменяемый набор модификаторов

accessFlags

public Set<AccessFlag> accessFlags()
Возвращает набор флагов модуля.
Возвращает:
Возможно, пустой неизменяемый набор флагов модуля
См. Спецификацию виртуальной машины Java:
4.7.25 Атрибут Module
Начиная с:
20
См. также:
  • 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, если у модуля нет версии
См. также:
  • version()

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 тогда и только тогда, когда заданный объект является дескриптором модуля, равным этому дескриптору модуля
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Вычисляет хэш-код этого дескриптора модуля.

Хэш-код основан на компонентах дескриптора модуля и удовлетворяет общему контракту метода Object.hashCode.

Переопределяет:
hashCode в классе Object
Возвращает:
Значение хэш-кода этого дескриптора модуля
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(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.

Построитель открытого модуля нельзя использовать для объявления открытых пакетов.

Параметры:
name — имя модуля
Возвращает:
Новый построитель для создания открытого модуля
Выбрасывает:
IllegalArgumentException — если имя модуля равно null или не является допустимым именем модуля

newAutomaticModule

public static ModuleDescriptor.Builder newAutomaticModule(String name)
Создаёт построитель для создания дескриптора автоматического модуля. Этот метод эквивалентен вызову newModule с модификатором AUTOMATIC.

Построитель автоматического модуля нельзя использовать для объявления зависимостей от модулей или служб. Его также нельзя использовать для объявления экспортируемых или открытых пакетов.

Параметры:
name — имя модуля
Возвращает:
Новый построитель для создания автоматического модуля
Выбрасывает:
IllegalArgumentException — если имя модуля равно null или не является допустимым именем модуля
См. также:
  • ModuleFinder.of(Path[])

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 — если обнаружен недопустимый дескриптор модуля

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API