Модуль класса
- Все реализованные интерфейсы:
AnnotatedElement
public final class Module extends Object implements AnnotatedElement
named, либо безымянный. Именные модули имеют name и создаются виртуальной машиной Java, когда граф модулей определён для виртуальной машины 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 для этого модуля. Если существует менеджер безопасности, то его метод checkPermission сначала вызывается с разрешением RuntimePermission("getClassLoader") для проверки, разрешено ли вызывающей стороне получить доступ к загрузчику классов.
- Возвращает:
- Загрузчик классов для этого модуля
- Исключения:
-
SecurityException- Если доступ запрещён менеджером безопасности
getDescriptor
public ModuleDescriptor getDescriptor()
null , если этот модуль является безымянным.- Возвращает:
- Дескриптор модуля для этого модуля
getLayer
public ModuleLayer getLayer()
null , если этот модуль не находится в слое модулей. Слой модулей содержит именованные модули, поэтому этот метод всегда возвращает null при вызове для безымянного модуля. Динамические модули являются именованными модулями, которые генерируются во время выполнения. Динамический модуль может или не может находиться в слое модулей.
- Возвращает:
- Слой модуля, содержащий этот модуль
- См. также:
isNativeAccessEnabled
public boolean isNativeAccessEnabled()
isNativeAccessEnabled это предварительный API платформы Java. true , если этот модуль может получить доступ к ограниченным методам.- Возвращает:
-
true, если этот модуль может получить доступ к ограниченным методам. - С:
- 20
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 Note:
- Как указано в разделе 5.4.3 спецификации The Java Virtual Machine Specification, если попытка разрешить символическую ссылку терпит неудачу из-за ошибки связи, последующие попытки разрешить ссылку всегда терпят неудачу с той же ошибкой, которая была выброшена в результате первоначальной попытки разрешения.
- Parameters:
-
pn- Имя пакета -
other- Модуль - Returns:
- текущий модуль
- Throws:
-
IllegalArgumentException- Еслиpn—null, или это именованный модуль, и пакетpnне является пакетом в этом модуле -
IllegalCallerException- Если это именованный модуль, и модуль вызывающего кода не является этим модулем - See Java Virtual Machine Specification:
- 5.4.3 Разрешение
- See Also:
addOpens
public Module addOpens(String pn, Module other)
Этот метод не имеет эффекта, если пакет уже открыт для данного модуля.
- API Note:
- Этот метод может использоваться в случаях, когда модуль-потребитель использует квалифицированное открытие для открытия пакета для модуля-API, но где рефлексивный доступ к членам классов в модуле-потребителе делегируется коду в другом модуле. Код в модуле-API может использовать этот метод для открытия пакета в модуле-потребителе для другого модуля.
- Parameters:
-
pn- Имя пакета -
other- Модуль - Returns:
- текущий модуль
- Throws:
-
IllegalArgumentException- Еслиpn—null, или это именованный модуль, и пакетpnне является пакетом в этом модуле -
IllegalCallerException- Если это именованный модуль, и этот модуль не открыл пакет хотя бы для модуля вызывающего кода - See Also:
addUses
public Module addUses(Class<?> service)
ServiceLoader от имени других модулей или когда фреймворк получает ссылку на тип сервиса от другого кода. Этот метод является пустым оператором при вызове на безымянном модуле или автоматическом модуле. Этот метод не заставляет resolveAndBind повторно выполняться.
- Parameters:
-
service- Тип сервиса - Returns:
- текущий модуль
- Throws:
-
IllegalCallerException- Если это именованный модуль и модуль вызывающего кода не является этим модулем - See Also:
canUse
public boolean canUse(Class<?> service)
true при вызове на безымянном модуле или автоматическом модуле.- Parameters:
-
service- Тип сервиса - Returns:
-
trueесли этот модуль использует тип сервисаst - See Also:
getPackages
public Set<String> getPackages()
Для именованных модулей возвращаемый набор содержит элемент для каждого пакета в модуле.
Для безымянных модулей возвращаемый набор содержит элемент для каждого пакета, который has been defined в безымянном модуле.
- Returns:
- набор имен пакетов пакетов в этом модуле
getAnnotation
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
null при вызове на безымянном модуле. Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления.
- Specified by:
-
getAnnotationв интерфейсеAnnotatedElement - Type Parameters:
-
T- тип аннотации, для запроса и возврата, если она присутствует - Parameters:
-
annotationClass- объект Class, соответствующий типу аннотации - Returns:
- аннотация этого элемента для указанного типа аннотации, если она присутствует на этом элементе, в противном случае null
getAnnotations
public Annotation[] getAnnotations()
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.
- Specified by:
-
getAnnotationsв интерфейсеAnnotatedElement - Returns:
- аннотации, присутствующие на этом элементе
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.
- Specified by:
-
getDeclaredAnnotationsв интерфейсеAnnotatedElement - Returns:
- аннотации, непосредственно присутствующие на этом элементе
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 если ресурс не находится в этом модуле, ресурс заключен и не может быть найден вызывающим методом, или доступ к ресурсу запрещен менеджером безопасности.
- Parameters:
-
name- Имя ресурса - Returns:
- Поток ввода для чтения ресурса или
null - Throws:
-
IOException- Если произошла ошибка ввода-вывода - See Also:
toString
public String toString()
"module", за которой следует пробел и имя модуля. Для безымянного модуля представление — строка "unnamed module", за которой следует пробел и затем строка, специфичная для реализации, которая идентифицирует безымянный модуль.- Overrides:
-
toStringв классеObject - Возвращает:
- Строковое представление этого модуля
© 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.html
isNativeAccessEnabledтолько при включенных предварительных функциях.