Spec-Zone.ru › OpenJDK 21

Модуль класса

java.lang.Object
java.lang.Module
Все реализованные интерфейсы:
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
См. также:
  • Class.getModule()

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

Модификатор и тип Метод Описание
Module addExports(String pn, Module other)
Если модуль вызывающего находится в этом модуле, обновить этот модуль, чтобы экспортировать заданный пакет в заданный модуль.
Module addOpens(String pn, Module other)
Если этот модуль открыл пакет как минимум для модуля вызывающего, обновить этот модуль, чтобы открыть пакет для заданного модуля.
Module addReads(Module other)
Если модуль вызывающего находится в этом модуле, обновить этот модуль, чтобы считать заданный модуль.
Module addUses(Class<?> service)
Если модуль вызывающего находится в этом модуле, обновить этот модуль, чтобы добавить зависимость от заданного типа сервиса.
boolean canRead(Module other)
Указывает, читает ли этот модуль заданный модуль.
boolean canUse(Class<?> service)
Указывает, есть ли у этого модуля зависимость от заданного типа сервиса.
<T extends Annotation>
T
getAnnotation(Class<T> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null.
Annotation[] getAnnotations()
Возвращает аннотации, которые присутствуют на этом элементе.
ClassLoader getClassLoader()
Возвращает ClassLoader для этого модуля.
Annotation[] getDeclaredAnnotations()
Возвращает аннотации, которые непосредственно присутствуют на этом элементе.
ModuleDescriptor getDescriptor()
Возвращает дескриптор модуля для этого модуля или null если этот модуль безымянный.
ModuleLayer getLayer()
Возвращает слой модулей, содержащий этот модуль, или null если этот модуль не находится в слое модулей.
String getName()
Возвращает имя модуля или null если этот модуль безымянный.
Set<String> getPackages()
Возвращает набор имён пакетов для пакетов в этом модуле.
InputStream getResourceAsStream(String name)
Возвращает поток ввода для чтения ресурса в этом модуле.
boolean isExported(String pn)
Возвращает true если этот модуль безусловно экспортирует заданный пакет.
boolean isExported(String pn, Module other)
Возвращает true если этот модуль экспортирует заданный пакет как минимум в заданный модуль.
boolean isNamed()
Возвращает true если этот модуль — именованный модуль.
boolean isNativeAccessEnabled()
Предварительный просмотр.
Возвращает true если этот модуль может получить доступ к ограниченным методам.
boolean isOpen(String pn)
Возвращает true если этот модуль открыл пакет безусловно.
boolean isOpen(String pn, Module other)
Возвращает 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 Безымянные модули
См. также:
  • ClassLoader.getUnnamedModule()

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 при вызове для безымянного модуля.

Динамические модули являются именованными модулями, которые генерируются во время выполнения. Динамический модуль может или не может находиться в слое модулей.

Возвращает:
Слой модуля, содержащий этот модуль
См. также:
  • Proxy

isNativeAccessEnabled

public boolean isNativeAccessEnabled()
isNativeAccessEnabled это предварительный API платформы Java.
Программы могут использовать isNativeAccessEnabled только при включенных предварительных функциях.
Предварительные функции могут быть удалены в будущей версии или доработаны до постоянных функций платформы Java.
Возвращает true , если этот модуль может получить доступ к ограниченным методам.
Возвращает:
true , если этот модуль может получить доступ к ограниченным методам.
С:
20

canRead

public boolean canRead(Module other)
Указывает, читает ли этот модуль данный модуль. Этот метод возвращает true при вызове для проверки, читает ли этот модуль сам себя. Он также возвращает true , если вызывается для безымянного модуля (так как безымянные модули читают все модули).
Параметры:
other - Другой модуль
Возвращает:
true , если этот модуль читает other
См. также:
  • addReads(Module)

addReads

public Module addReads(Module other)
Если модуль вызывающей стороны - это данный модуль, обновите этот модуль для чтения данного модуля. Этот метод является пустой операцией, если other - это данный модуль (все модули читают сами себя), этот модуль - безымянный модуль (так как безымянные модули читают все модули), или этот модуль уже читает other.
Примечание по реализации:
Ребра чтения, добавленные этим методом, являются слабыми и не препятствуют other от сборки мусора, когда этот модуль чётко достижим.
Параметры:
other - Другой модуль
Возвращает:
данный модуль
Исключения:
IllegalCallerException - Если это именованный модуль, и модуль вызывающей стороны - не этот модуль
См. также:
  • canRead(java.lang.Module)

isExported

public boolean isExported(String pn, Module other)
Возвращает true , если этот модуль экспортирует данный пакет, по крайней мере, данному модулю.

Этот метод возвращает true при вызове для проверки, экспортирует ли пакет в этом модуле сам себя. Он всегда возвращает true при вызове для безымянного модуля. Пакет, который open данному модулю, считается экспортированным данному модулю во время выполнения, и поэтому этот метод возвращает true , если пакет открыт для данного модуля.

Этот метод не проверяет, читает ли данный модуль этот модуль.

Параметры:
pn - Имя пакета
other - Другой модуль
Возвращает:
true , если этот модуль экспортирует пакет, по крайней мере, данному модулю
См. также:
  • ModuleDescriptor.exports()
  • addExports(String,Module)

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 , если этот модуль открыл пакет, по крайней мере, данному модулю
См. также:
  • ModuleDescriptor.opens()
  • addOpens(String,Module)
  • AccessibleObject.setAccessible(boolean)
  • MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)

isExported

public boolean isExported(String pn)
Возвращает true , если этот модуль экспортирует данный пакет безусловно.

Этот метод всегда возвращает true при вызове для безымянного модуля. Пакет, который opened безусловно, считается экспортированным безусловно во время выполнения, и поэтому этот метод возвращает true , если пакет открыт безусловно.

Этот метод не проверяет, читает ли данный модуль этот модуль.

Параметры:
pn - Имя пакета
Возвращает:
true , если этот модуль экспортирует пакет безусловно
См. также:
  • ModuleDescriptor.exports()

isOpen

public boolean isOpen(String pn)
Возвращает true , если этот модуль открыл пакет безусловно.

Этот метод всегда возвращает true при вызове для безымянного модуля. Кроме того, он всегда возвращает true при вызове для open модуля с пакетом в модуле.

Этот метод не проверяет, читает ли данный модуль этот модуль.

Примечание API:
Пакет p , открытый для модуля M , позволяет коду в M выполнять глубокое отражение на все типы в пакете. Кроме того, если M читает этот модуль, он может получить объект Lookup, которому разрешено define classes в пакете p.
Параметры:
pn - Имя пакета
Возвращает:
true , если этот модуль открыл пакет безусловно
См. также:
  • ModuleDescriptor.opens()
  • AccessibleObject.setAccessible(boolean)
  • MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)

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:
  • isExported(String,Module)

addOpens

public Module addOpens(String pn, Module other)
Если этот модуль открыл пакет по крайней мере для модуля вызывающего кода, то обновить этот модуль, чтобы он открыл пакет для данного модуля. Открытие пакета с помощью этого метода позволяет всем типам в пакете и всем их членам, а не только общедоступным типам и их общедоступным членам, быть отображаемыми данным модулем при использовании API, которые поддерживают частный доступ или способ обойти или подавить проверки контроля доступа по умолчанию языка Java.

Этот метод не имеет эффекта, если пакет уже открыт для данного модуля.

API Note:
Этот метод может использоваться в случаях, когда модуль-потребитель использует квалифицированное открытие для открытия пакета для модуля-API, но где рефлексивный доступ к членам классов в модуле-потребителе делегируется коду в другом модуле. Код в модуле-API может использовать этот метод для открытия пакета в модуле-потребителе для другого модуля.
Parameters:
pn - Имя пакета
other - Модуль
Returns:
текущий модуль
Throws:
IllegalArgumentException - Если pn — null, или это именованный модуль, и пакет pn не является пакетом в этом модуле
IllegalCallerException - Если это именованный модуль, и этот модуль не открыл пакет хотя бы для модуля вызывающего кода
See Also:
  • isOpen(String,Module)
  • AccessibleObject.setAccessible(boolean)
  • MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)

addUses

public Module addUses(Class<?> service)
Если модуль вызывающего кода — это текущий модуль, то обновить текущий модуль, чтобы добавить зависимость от данного типа сервиса. Этот метод предназначен для использования фреймворками, которые вызывают ServiceLoader от имени других модулей или когда фреймворк получает ссылку на тип сервиса от другого кода. Этот метод является пустым оператором при вызове на безымянном модуле или автоматическом модуле.

Этот метод не заставляет resolveAndBind повторно выполняться.

Parameters:
service - Тип сервиса
Returns:
текущий модуль
Throws:
IllegalCallerException - Если это именованный модуль и модуль вызывающего кода не является этим модулем
See Also:
  • canUse(Class)
  • ModuleDescriptor.uses()

canUse

public boolean canUse(Class<?> service)
Указывает, имеет ли этот модуль зависимость от данного типа сервиса. Этот метод всегда возвращает true при вызове на безымянном модуле или автоматическом модуле.
Parameters:
service - Тип сервиса
Returns:
true если этот модуль использует тип сервиса st
See Also:
  • addUses(Class)

getPackages

public Set<String> getPackages()
Возвращает набор имен пакетов для пакетов в этом модуле.

Для именованных модулей возвращаемый набор содержит элемент для каждого пакета в модуле.

Для безымянных модулей возвращаемый набор содержит элемент для каждого пакета, который has been defined в безымянном модуле.

Returns:
набор имен пакетов пакетов в этом модуле

getAnnotation

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, в противном случае null. Этот метод возвращает null при вызове на безымянном модуле.

Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления.

Specified by:
getAnnotation в интерфейсе AnnotatedElement
Type Parameters:
T - тип аннотации, для запроса и возврата, если она присутствует
Parameters:
annotationClass - объект Class, соответствующий типу аннотации
Returns:
аннотация этого элемента для указанного типа аннотации, если она присутствует на этом элементе, в противном случае null

getAnnotations

public Annotation[] getAnnotations()
Возвращает аннотации, которые присутствуют на этом элементе. Если на этом элементе нет аннотаций присутствует, возвращаемое значение — массив длины 0. Вызывающий метод этого метода свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам. Этот метод возвращает пустой массив при вызове на безымянном модуле.

Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

Specified by:
getAnnotations в интерфейсе AnnotatedElement
Returns:
аннотации, присутствующие на этом элементе

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()
Возвращает аннотации, которые непосредственно присутствуют на этом элементе. Этот метод игнорирует унаследованные аннотации. Если на этом элементе нет аннотаций непосредственно присутствует, возвращаемое значение — массив длины 0. Вызывающий метод этого метода свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам. Этот метод возвращает пустой массив при вызове на безымянном модуле.

Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.

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:
  • Class.getResourceAsStream(String)

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

Spec-Zone.ru

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