Spec-Zone.ru › OpenJDK 24

Класс ModuleDescriptor

java.lang.Object
java.lang.module.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
См. также:
  • 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()
Возвращает версию модуля.

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

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

name

public String name()

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

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

modifiers

public Set<ModuleDescriptor.Modifier> modifiers()

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

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

accessFlags

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

toString

public String toString()

Возвращает строку, описывающую модуль.

Переопределяет:
toString в классе Object
Возвращает:
Строку, описывающую модуль

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:
  • 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 Note:
Параметр packageFinder используется при чтении описателей модулей из устаревших форматов модульных артефактов, которые не записывают набор пакетов в сам описатель.
Parameters:
in - Поток ввода
packageFinder - Поставщик, который может произвести набор пакетов
Returns:
Описатель модуля
Throws:
InvalidModuleDescriptorException - Если обнаружен неверный описатель модуля или набор пакетов, возвращённый packageFinder, не включает все пакеты, полученные из описателя модуля
IOException - Если произошла ошибка ввода/вывода при чтении из потока ввода или UncheckedIOException был выброшен поисковиком пакетов

read

public static ModuleDescriptor read(InputStream in) throws IOException
Читает двоичную форму объявления модуля из потока ввода как описатель модуля. Этот метод работает точно так же, как указано в методе 2-аргументном 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)
Читает двоичную форму объявления модуля из буфера байтов как описатель модуля. Этот метод работает точно так же, как указано в методе 2-аргументном read, за исключением того, что поисковик пакетов не используется для поиска дополнительных пакетов, когда описатель модуля, закодированный в буфере, не указывает набор пакетов.
Parameters:
bb - Буфер байтов
Returns:
Описатель модуля
Throws:
InvalidModuleDescriptorException - Если обнаружен неверный описатель модуля

Отправить сообщение об ошибке или предложить улучшение
Для дополнительной справки по API и документации для разработчиков, обратитесь к документации Java SE, которая содержит более подробные описания, ориентированные на разработчиков, с общими обзорами, определениями терминов, решениями проблем и рабочими примерами кода. Другие версии.
Java является торговой маркой или зарегистрированной торговой маркой Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 США.
Все права защищены. Использование подчиняется условиям лицензии и политике перераспределения документации.
DRAFT 24-ea+36-Debian-1

© 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

Spec-Zone.ru

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