Spec-Zone.ru › OpenJDK 17

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

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

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

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

Параметры:
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 модуле с пакетом в модуле.

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

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

addExports

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

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

Примечание API:
Как указано в разделе 5.4.3 Спецификации виртуальной машины Java, если попытка разрешения символической ссылки терпит неудачу из-за ошибки связи, то последующие попытки разрешения ссылки всегда терпят неудачу с той же ошибкой, которая была выброшена в результате первой попытки разрешения.
Параметры:
pn - Имя пакета
other - Модуль
Возвращает:
данный модуль
Исключения:
IllegalArgumentException - Если pn — это null, или это именованный модуль, и пакет pn не является пакетом в этом модуле
IllegalCallerException - Если это именованный модуль, и модуль вызывающего элемента не является этим модулем
См. Спецификацию виртуальной машины Java:
5.4.3 Разрешение
См. также:
  • isExported(String,Module)

addOpens

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

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

API Note:
Этот метод может быть использован в тех случаях, когда модуль-потребитель использует квалифицированное opens для открытия пакета для модуля-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
Returns:
Строковое представление этого модуля

© 1993, 2021, 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/17/docs/api/java.base/java/lang/Module.html

Spec-Zone.ru

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