Модуль класса
- Все реализованные интерфейсы:
AnnotatedElement
public final class Module extends Object implements AnnotatedElement
named, либо безымянный. Именные модули имеют name и создаются виртуальной машиной Java при определении графа модулей для создания слоя модулей.
Безымянный модуль не имеет имени. Для каждого ClassLoader существует безымянный модуль, полученный вызовом его метода getUnnamedModule. Все типы, которые не находятся в именованном модуле, являются членами безымянного модуля определяющего загрузчика классов.
Имена пакетов, которые являются параметрами или возвращаемыми значениями методов, определенных в этом классе, — это полные имена пакетов, определенные в разделе 6.5.3 Спецификации языка Java, например, "java.lang".
Если не указано иное, передача null аргумента методу в этом классе приводит к возбуждению исключения NullPointerException.
- См. Спецификацию языка Java:
- 7.7 Объявления модулей
- С тех пор как:
- 9
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Module |
addExports |
Если модуль вызывающего является этим модулем, то обновляет этот модуль, чтобы экспортировать указанный пакет в указанный модуль. |
Module |
addOpens |
Если этот модуль открыл пакет как минимум для вызывающего модуля, то обновляет этот модуль, чтобы открыть пакет для данного модуля. |
Module |
addReads |
Если модуль вызывающего является этим модулем, то обновляет этот модуль, чтобы прочитать указанный модуль. |
Module |
addUses |
Если модуль вызывающего является этим модулем, то обновляет этот модуль, чтобы добавить зависимость от указанного типа сервиса. |
boolean |
canRead |
Указывает, читает ли этот модуль указанный модуль. |
boolean |
canUse |
Указывает, существует ли у этого модуля зависимость от указанного типа сервиса. |
<T extends Annotation> |
getAnnotation |
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, в противном случае null. |
Annotation[] |
getAnnotations() |
Возвращает аннотации, которые присутствуют на этом элементе. |
ClassLoader |
getClassLoader() |
Возвращает ClassLoader для этого модуля. |
Annotation[] |
getDeclaredAnnotations() |
Возвращает аннотации, которые непосредственно присутствуют на этом элементе. |
ModuleDescriptor |
getDescriptor() |
Возвращает дескриптор модуля для этого модуля или null, если этот модуль является безымянным модулем. |
ModuleLayer |
getLayer() |
Возвращает слой модулей, содержащий этот модуль, или null, если этот модуль не находится в слое модулей. |
String |
getName() |
Возвращает имя модуля или null, если этот модуль является безымянным модулем. |
Set |
getPackages() |
Возвращает набор имен пакетов для пакетов в этом модуле. |
InputStream |
getResourceAsStream |
Возвращает поток ввода для чтения ресурса в этом модуле. |
boolean |
isExported |
Возвращает true, если этот модуль экспортирует указанный пакет безусловно. |
boolean |
isExported |
Возвращает true, если этот модуль экспортирует указанный пакет как минимум для данного модуля. |
boolean |
isNamed() |
Возвращает true, если этот модуль является именованным модулем. |
boolean |
isNativeAccessEnabled() |
Возвращает true, если этот модуль может получить доступ к методам ограниченным. |
boolean |
isOpen |
Возвращает true, если этот модуль открыл пакет безусловно. |
boolean |
isOpen |
Возвращает true, если этот модуль открыл пакет как минимум для данного модуля. |
String |
toString() |
Возвращает строковое представление этого модуля. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.lang.reflect.AnnotatedElement
getAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent
Подробное описание методов
isNamed
public boolean isNamed()
true, если этот модуль является именованным модулем.- Возвращает:
-
true, если это именованный модуль - См. Спецификацию языка Java:
- 7.7.5 Безымянные модули
- См. также:
getName
public String getName()
null, если этот модуль является безымянным модулем.- Возвращает:
- Имя модуля
getClassLoader
public ClassLoader getClassLoader()
ClassLoader для этого модуля.- Возвращает:
- Загрузчик классов для этого модуля
getDescriptor
public ModuleDescriptor getDescriptor()
null, если этот модуль является безымянным модулем.- Возвращает:
- Дескриптор модуля для этого модуля
getLayer
public ModuleLayer getLayer()
null, если этот модуль не находится в слое модулей. Слой модулей содержит именованные модули, поэтому этот метод всегда возвращает null при вызове для безымянного модуля. Динамические модули — это именованные модули, которые генерируются во время выполнения. Динамический модуль может или не может находиться в слое модулей.
- Возвращает:
- Слой модулей, содержащий этот модуль
- См. также:
isNativeAccessEnabled
public boolean isNativeAccessEnabled()
true, если этот модуль может получить доступ к ограниченным методам.- Возвращает:
-
true, если этот модуль может получить доступ к ограниченным методам. - С:
- 22
canRead
public boolean canRead(Module other)
true, если вызывается для проверки, читает ли этот модуль самого себя. Он также возвращает true, если вызывается для безымянного модуля (так как безымянные модули читают все модули).- Параметры:
-
other- Другой модуль - Возвращает:
-
true, если этот модуль читаетother - См. также:
addReads
public Module addReads(Module other)
other — это этот модуль (все модули читают сами себя), этот модуль является безымянным модулем (так как безымянные модули читают все модули) или этот модуль уже читает other.- Примечание реализации:
-
Ребра чтения, добавленные этим методом, являются слабыми и не препятствуют тому, чтобы
otherбыл удалён сборщиком мусора, когда этот модуль является жёстко достижимым. - Параметры:
-
other- Другой модуль - Возвращает:
- Этот модуль
- Исключение:
-
IllegalCallerException- Если это именованный модуль, а вызывающий модуль не является этим модулем - См. также:
isExported
public boolean isExported(String pn, Module other)
true, если этот модуль экспортирует указанный пакет по меньшей мере для указанного модуля. Этот метод возвращает true, если вызывается для проверки, экспортируется ли пакет в этом модуле самому себе. Он всегда возвращает true при вызове для безымянного модуля. Пакет, который open для данного модуля, считается экспортированным для этого модуля во время выполнения, и поэтому этот метод возвращает true, если пакет открыт для данного модуля.
Этот метод не проверяет, читает ли данный модуль этот модуль.
- Параметры:
-
pn- Имя пакета -
other- Другой модуль - Возвращает:
-
true, если этот модуль экспортирует пакет по меньшей мере для данного модуля - См. также:
isOpen
public boolean isOpen(String pn, Module other)
true, если этот модуль открыл пакет по меньшей мере для данного модуля. Этот метод возвращает true, если вызывается для проверки, открыт ли пакет в этом модуле для самого себя. Он возвращает true при вызове для open модуля с пакетом в модуле. Он всегда возвращает true при вызове для безымянного модуля.
Этот метод не проверяет, читает ли данный модуль этот модуль.
- Примечание API:
- Пакет
p, открытый для модуляM, позволяет коду вMвыполнить глубокое рефлексирование всех типов в пакете. Кроме того, еслиMчитает этот модуль, он может получить объектLookup, которому разрешеноdefine classesв пакетеp. - Параметры:
-
pn- Имя пакета -
other- Другой модуль - Возвращает:
-
true, если этот модуль открыл пакет по меньшей мере для данного модуля - См. также:
isExported
public boolean isExported(String pn)
true, если этот модуль экспортирует указанный пакет безусловно. Этот метод всегда возвращает true при вызове для безымянного модуля. Пакет, который opened безусловно, считается экспортированным безусловно во время выполнения, и поэтому этот метод возвращает true, если пакет открыт безусловно.
Этот метод не проверяет, читает ли данный модуль этот модуль.
- Параметры:
-
pn- Имя пакета - Возвращает:
-
true, если этот модуль экспортирует пакет безусловно - См. также:
isOpen
public boolean isOpen(String pn)
true, если этот модуль открыл пакет безусловно. Этот метод всегда возвращает true при вызове для безымянного модуля. Кроме того, он всегда возвращает true при вызове для open модуля с пакетом в модуле.
Этот метод не проверяет, читает ли данный модуль этот модуль.
- Примечание API:
- Пакет
p, открытый для модуляM, позволяет коду вMвыполнить глубокое рефлексирование всех типов в пакете. Кроме того, еслиMчитает этот модуль, он может получить объектLookup, которому разрешеноdefine classesв пакетеp. - Параметры:
-
pn- Имя пакета - Возвращает:
-
true, если этот модуль открыл пакет безусловно - См. также:
addExports
public Module addExports(String pn, Module other)
Этот метод не оказывает никакого влияния, если пакет уже экспортирован (или открыт) для данного модуля.
- Примечание API:
- Как указано в разделе 5.4.3 спецификации The Java Virtual Machine Specification, если попытка разрешения символической ссылки завершается неудачей из-за ошибки линковки, то последующие попытки разрешения ссылки всегда завершатся той же ошибкой, которая была сгенерирована в результате первоначальной попытки разрешения.
- Параметры:
-
pn— Имя пакета -
other— Модуль - Возвращает:
- данный модуль
- Выбрасывает:
-
IllegalArgumentException— Еслиpn—null, или если это именованный модуль, и пакетpnне является пакетом в данном модуле -
IllegalCallerException— Если это именованный модуль и модуль вызывающего кода не является данным модулем - См. Спецификацию виртуальной машины Java:
- 5.4.3 Разрешение
- См. также:
addOpens
public Module addOpens(String pn, Module other)
Этот метод не оказывает никакого влияния, если пакет уже открыт для данного модуля.
- Примечание API:
- Этот метод можно использовать в случаях, когда модуль-потребитель использует квалифицированное открытие для открытия пакета для модуля-API, но при этом рефлексивный доступ к членам классов в модуле-потребителе делегируется коду в другом модуле. Код в модуле-API может использовать этот метод для открытия пакета в модуле-потребителе для другого модуля.
- Параметры:
-
pn— Имя пакета -
other— Модуль - Возвращает:
- данный модуль
- Выбрасывает:
-
IllegalArgumentException— Еслиpn—null, или если это именованный модуль, и пакетpnне является пакетом в этом модуле -
IllegalCallerException— Если это именованный модуль и этот модуль не открыл пакет по крайней мере для модуля вызывающего кода - См. также:
addUses
public Module addUses(Class<?> service)
ServiceLoader от имени других модулей или когда фреймворку передаётся ссылка на тип службы другим кодом. Этот метод является бесполезной операцией при вызове на безымянном или автоматическом модуле. Этот метод не вызывает повторного выполнения resolveAndBind.
- Параметры:
-
service— Тип службы - Возвращает:
- данный модуль
- Выбрасывает:
-
IllegalCallerException— Если это именованный модуль и модуль вызывающего кода не является данным модулем - См. также:
canUse
public boolean canUse(Class<?> service)
true, когда вызывается на безымянном или автоматическом модуле.- Параметры:
-
service— Тип службы - Возвращает:
-
true, если этот модуль использует тип службыst - См. также:
getPackages
public Set<String> getPackages()
Для именованных модулей возвращаемое множество содержит элемент для каждого пакета в модуле.
Для безымянных модулей возвращаемое множество содержит элемент для каждого пакета, который has been defined в безымянном модуле.
- Возвращает:
- множество имён пакетов пакетов в этом модуле
getAnnotation
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
null при вызове на безымянном модуле. Обратите внимание, что любая возвращаемая этим методом аннотация — это аннотация объявления.
- Указано в:
-
getAnnotationв интерфейсеAnnotatedElement - Параметры типа:
T— тип аннотации, для которого необходимо выполнить запрос и вернуть, если она присутствует- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- аннотация этого элемента для указанного типа аннотации, если она присутствует в этом элементе, иначе null
getAnnotations
public Annotation[] getAnnotations()
Обратите внимание, что все аннотации, возвращаемые этим методом, являются аннотациями объявления.
- Указано в:
-
getAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- присутствующие в этом элементе аннотации
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Обратите внимание, что все аннотации, возвращаемые этим методом, являются аннотациями объявления.
- Указано в:
-
getDeclaredAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, непосредственно присутствующие в этом элементе
getResourceAsStream
public InputStream getResourceAsStream(String name) throws IOException
name — это имя пути, разделённое символом '/', которое идентифицирует ресурс. Как и в случае с Class.getResourceAsStream, этот метод делегирует метод загрузчика классов модуля findResource(String,String), вызывая его с именем модуля (или null, когда модуль безымянный) и именем ресурса. Если имя ресурса начинается с ведущей косой черты, то она удаляется перед делегированием. Ресурс в именованном модуле может быть запечатан, так что к нему не может получить доступ код в других модулях. Определение того, доступен ресурс или нет, определяется следующим образом:
- Если имя ресурса заканчивается на "
.class", то он не запечатан. - Имя пакета выводится из имени ресурса. Если имя пакета — пакет в модуле, то к ресурсу может получить доступ только вызывающий код, когда пакет открыт как минимум для модуля вызывающего кода. Если ресурс не находится в пакете в модуле, то ресурс не запечатан.
В приведенном выше примере имя пакета для ресурса извлекается из подпоследовательности символов, предшествующих последнему символу '/' в имени, а затем каждый символ '/' в подпоследовательности заменяется на '.'. Ведущая косая черта игнорируется при получении имени пакета. Например, имя пакета, полученное для ресурса с именем "a/b/c/foo.properties", — "a.b.c". Имя ресурса с именем "META-INF/MANIFEST.MF" никогда не запечатывается, потому что "META-INF" не является допустимым именем пакета.
Этот метод возвращает null, если ресурс не находится в данном модуле или ресурс запечатан и не может быть найден вызывающим кодом.
- Параметры:
-
name— Имя ресурса - Возвращает:
- Поток ввода для чтения ресурса или
null - Выбрасывает:
-
IOException— Если произошла ошибка ввода-вывода - См. также:
toString
public String toString()
"module", за которой следует пробел и имя модуля. Для безымянного модуля представление — это строка "unnamed module", за которой следует пробел и затем строка, специфичная для реализации, идентифицирующая безымянный модуль.
© 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.html