Класс 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, определенных здесь.
Описание модуля описывает обычный, открытый или автоматический модуль. Обычные модули и открытые модули описывают свои dependences, exported-packages, сервисы, которые они use или provide, и другие компоненты. Обычные модули могут open определенные пакеты. Описание открытого модуля не объявляет открытых пакетов (его метод opens возвращает пустой набор), но при создании в виртуальной машине Java он обрабатывается как будто все пакеты открыты. Описание автоматического модуля не объявляет зависимостей (кроме обязательной зависимости от
java.base), и не объявляет экспортируемые или открытые пакеты. Автоматические модули получают специальное обращение во время разрешения, чтобы они читали все остальные модули в конфигурации. При создании автоматического модуля в виртуальной машине Java, он считывает каждый безымянный модуль и обрабатывается как будто все пакеты экспортированы и открыты.
Объекты ModuleDescriptor неизменяемы и безопасны для использования несколькими одновременными потоками.
- С:
- 9
- См. также:
Module
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class | ModuleDescriptor.Builder | Построитель для создания объектов |
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() | Возвращает набор объектов |
int | hashCode() | Вычисляет хэш-код для этого описания модуля. |
boolean | isAutomatic() | Возвращает |
boolean | isOpen() | Возвращает |
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() | Возвращает набор объектов |
Set<String> | packages() | Возвращает набор пакетов в модуле. |
Set<ModuleDescriptor.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() | Возвращает набор объектов |
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()
Возвращает строку, описывающую модуль.
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