Класс ModuleDescriptor

Все реализуемые интерфейсы:
Comparable<ModuleDescriptor>
public class ModuleDescriptor
extends Object
implements Comparable<ModuleDescriptor>

Описание модуля.

Описание модуля содержит имя модуля и методы получения его компонентов. Описание модуля для именованного модуля в виртуальной машине Java получается путем вызова метода Module's getDescriptor. Описание модуля также можно создать, используя класс ModuleDescriptor.Builder или прочитав двоичную форму объявления модуля (module-info.class) с помощью методов read, определенных здесь.

Описание модуля описывает обычный, открытый или автоматический модуль. Обычные модули и открытые модули описывают свои dependences, exported-packages, сервисы, которые они use или provide, и другие компоненты. Обычные модули могут open определенные пакеты. Описание открытого модуля не объявляет открытых пакетов (его метод opens возвращает пустой набор), но при создании в виртуальной машине Java он обрабатывается как будто все пакеты открыты. Описание автоматического модуля не объявляет зависимостей (кроме обязательной зависимости от java.base), и не объявляет экспортируемые или открытые пакеты. Автоматические модули получают специальное обращение во время разрешения, чтобы они читали все остальные модули в конфигурации. При создании автоматического модуля в виртуальной машине Java, он считывает каждый безымянный модуль и обрабатывается как будто все пакеты экспортированы и открыты.

Объекты ModuleDescriptor неизменяемы и безопасны для использования несколькими одновременными потоками.

С:
9
См. также:
Module

Вложенные классы

Модификатор и тип Класс Описание
static class  ModuleDescriptor.Builder

Построитель для создания объектов ModuleDescriptor.

static class  ModuleDescriptor.Exports

Экспортируемый пакет модуля, может быть квалифицированным или неквалифицированным.

static class  ModuleDescriptor.Modifier

Модификатор модуля.

static class  ModuleDescriptor.Opens

Открытый пакет модуля, может быть квалифицированным или неквалифицированным.

static class  ModuleDescriptor.Provides

Сервис, предоставляемый модулем с одной или несколькими реализациями.

static class  ModuleDescriptor.Requires

Зависимость от модуля

static 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 сравниваются путём лексикографического сравнения имён модулей. Если имена модулей равны, то сравниваются версии модулей. При сравнении версий модуль с версией считается большим, чем модуль без версии. Если обе версии не могут быть проанализированы (unparseable), то сравниваются строки сырых версий лексикографически. Если имена модулей и версии равны (или не заданы в обоих), то сравнивается набор модификаторов. Наборы модификаторов сравниваются путём сравнения двоичного значения, вычисляемого для каждого набора. Если модификатор присутствует в наборе, то бит в позиции его порядкового номера равен 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.

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

Параметры:
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

Считывает двоичную форму объявления модуля из входного потока в качестве описателя модуля. Этот метод работает точно так, как указано в методе с 2 аргументами 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)

Считывает двоичную форму объявления модуля из буфера байтов в качестве описателя модуля. Этот метод работает точно так, как указано в методе с 2 аргументами read за исключением того, что поисковик пакетов не используется для поиска дополнительных пакетов, когда описатель модуля, закодированный в буфере, не указывает набор пакетов.

Параметры:
bb - Буфер байтов
Возвращает:
Описатель модуля
Выбрасывает:
InvalidModuleDescriptorException - Если обнаружен неверный описатель модуля

© 1993, 2020, 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/11/docs/api/java.base/java/lang/module/ModuleDescriptor.html

Spec-Zone .ru
спецификации, руководства, описания, API