Spec-Zone.ru › OpenJDK 21

Класс 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, определённых здесь.

Описание модуля описывает обычный, открытый или автоматический модуль. Обычные и открытые модули описывают свои зависимости, экспорт, сервисы, которые они используют или предоставляют, и другие компоненты. Обычные модули могут открыть определённые пакеты. Описание открытого модуля не объявляет открытых пакетов (его метод 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 Virtual Machine:
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)
Инициализирует билдер для построения дескриптора модуля.
Параметры:
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:
  • 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 - Если обнаружено некорректное описание модуля

© 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

Spec-Zone.ru

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