Spec-Zone.ru › OpenJDK 17

Класс 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 неизменяемы и безопасны для использования в нескольких потоках.

Since:
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
Строка версии модуля.

Краткое описание методов

Модификатор и тип Метод Описание
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()

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

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

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, 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

Spec-Zone.ru

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