Spec-Zone.ru › OpenJDK 24

Класс Package

java.lang.Object
java.lang.Package
Все реализуемые интерфейсы:
AnnotatedElement
public class Package extends Object implements AnnotatedElement
Представляет метаданные о пакете времени выполнения, связанном с загрузчиком классов. Метаданные включают аннотации, версионирование и герметизацию.

Аннотации для пакета времени выполнения считываются из package-info.class в том же исходном коде, что и классы в пакете времени выполнения.

Набор классов, составляющих пакет времени выполнения, может реализовывать определенный стандарт. Заголовок спецификации, версия и поставщик (указывая владельца/администратора спецификации) могут быть указаны при определении Package. Приложение может запросить, совместима ли Package с определенной версией спецификации, используя метод Package.isCompatibleWith(String). Кроме того, информация о фактических классах, составляющих пакет времени выполнения, может быть предоставлена при определении Package. Эта информация состоит из заголовка реализации, версии и поставщика (указывает поставщика классов).

Пакет времени выполнения может быть явно определён с помощью метода ClassLoader.definePackage(String, String, String, String, String, String, String, URL). Вызывающий метод предоставляет заголовки, версии и поставщиков спецификации и реализации. Вызывающий метод также указывает, является ли пакет герметичным. Если для пакета времени выполнения не определен Package явно при определении класса в этом пакете времени выполнения, то Package автоматически определяются загрузчиком класса, определяющим этот класс, следующим образом.

Package, автоматически определённый для классов в именованном модуле, обладает следующими свойствами:

  • Имя пакета выводится из бинарных имён классов. Поскольку классы в именованном модуле должны находиться в именованном пакете, полученное имя никогда не пусто.
  • Пакет герметичен с использованием расположения модуля в качестве исходного кода, если это известно.
  • Заголовки, версии и поставщики спецификации и реализации не определены.
  • Любые аннотации пакета считываются из package-info.class, как указано выше.

Package, автоматически определённый для классов в безымянном модуле, обладает следующими свойствами:

  • Имя пакета либо "" (для классов в безымянном пакете), либо выводится из бинарных имён классов (для классов в именованном пакете).
  • Пакет не герметичен.
  • Заголовки, версии и поставщики спецификации и реализации не определены.
  • Любые аннотации пакета считываются из package-info.class, как указано выше.

Package можно получить с помощью методов Package.getPackage(String) и ClassLoader.getDefinedPackage(String). Каждый Package, определённый загрузчиком классов, может быть получен с помощью методов Package.getPackages() и ClassLoader.getDefinedPackages().

Замечание по реализации:
Встроенные загрузчики классов (builtin class loaders) не определяют явно объекты Package для пакетов в именованных модулях. Вместо этого эти пакеты автоматически определяются и не содержат информации о версионировании спецификации и реализации.
См. Спецификацию Java Virtual Machine:
5.3 Создание и загрузка
С тех пор:
1.2
См. также:
  • Спецификация JAR-файла: герметизация пакетов
  • ClassLoader.definePackage(String, String, String, String, String, String, String, URL)

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

Модификатор и тип Метод Описание
<A extends Annotation>
A
getAnnotation(Class<A> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация существует, в противном случае null.
Annotation[] getAnnotations()
Возвращает аннотации, которые существуют на этом элементе.
<A extends Annotation>
A[]
getAnnotationsByType(Class<A> annotationClass)
Возвращает аннотации, которые связаны с этим элементом.
<A extends Annotation>
A
getDeclaredAnnotation(Class<A> annotationClass)
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация непосредственно существует, в противном случае null.
Annotation[] getDeclaredAnnotations()
Возвращает аннотации, которые непосредственно существуют на этом элементе.
<A extends Annotation>
A[]
getDeclaredAnnotationsByType(Class<A> annotationClass)
Возвращает аннотацию(и) этого элемента для указанного типа, если такие аннотации непосредственно существуют или косвенно существуют.
String getImplementationTitle()
Возвращает заголовок этого пакета.
String getImplementationVendor()
Возвращает поставщика, реализовавшего этот пакет, null возвращается, если он неизвестен.
String getImplementationVersion()
Возвращает версию этой реализации.
String getName()
Возвращает имя этого пакета.
static Package getPackage(String name)
Deprecated.
Если несколько загрузчиков классов делегируют друг другу и определяют классы с одинаковым именем пакета, а один из таких загрузчиков полагается на поведение поиска getPackage для возвращения Package от родительского загрузчика, то свойства, экспонируемые Package, могут не соответствовать ожиданиям в остальной части программы.
static Package[] getPackages()
Возвращает все Package, определённые загрузчиком вызывающего метода и его предками.
String getSpecificationTitle()
Возвращает заголовок спецификации, реализованной этим пакетом.
String getSpecificationVendor()
Возвращает имя организации, поставщика или компании, владеющей и поддерживающей спецификацию классов, реализующих этот пакет.
String getSpecificationVersion()
Возвращает номер версии спецификации, реализованной этим пакетом.
int hashCode()
Возвращает хэш-код, вычисленный из имени пакета.
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Возвращает true, если аннотация указанного типа существует на этом элементе, в противном случае false.
boolean isCompatibleWith(String desired)
Сравнение версии спецификации этого пакета с желаемой версией.
boolean isSealed()
Возвращает true, если этот пакет герметичен.
boolean isSealed(URL url)
Возвращает true, если этот пакет герметичен относительно указанного исходного кода url.
String toString()
Возвращает строковое представление этого пакета.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание методов

getName

public String getName()
Возвращает имя этого пакета.
Возвращает:
Полное имя этого пакета, как определено в разделе 6.5.3 спецификации языка Java, например, java.lang

getSpecificationTitle

public String getSpecificationTitle()
Возвращает заголовок спецификации, реализованной этим пакетом.
Возвращает:
заголовок спецификации, null если он неизвестен.

getSpecificationVersion

public String getSpecificationVersion()
Возвращает номер версии спецификации, реализованной этим пакетом. Эта строка версии должна быть последовательностью неотрицательных десятичных целых чисел, разделенных символами ".", и может содержать ведущие нули. При сравнении строк версии сравниваются наиболее значимые числа.

Номера версий спецификации используют синтаксис, состоящий из неотрицательных десятичных целых чисел, разделенных точками ".", например "2.0" или "1.2.3.4.5.6.7". Это позволяет использовать расширяемое число для представления основных, второстепенных, микро и т. д. версий. Спецификация версии описана следующей формальной грамматикой:

SpecificationVersion:
Digits RefinedVersionopt
RefinedVersion:
. Digits
. Digits RefinedVersion
Digits:
Digit
Digits
Digit:
любой символ, для которого Character.isDigit(char) возвращает true, например 0, 1, 2, ...
Возвращает:
версия спецификации, null если она неизвестна.

getSpecificationVendor

public String getSpecificationVendor()
Возвращает имя организации, поставщика или компании, владеющей и поддерживающей спецификацию классов, реализующих этот пакет.
Возвращает:
поставщик спецификации, null если он неизвестен.

getImplementationTitle

public String getImplementationTitle()
Возвращает заголовок этого пакета.
Возвращает:
заголовок реализации, null если он неизвестен.

getImplementationVersion

public String getImplementationVersion()
Возвращает версию этой реализации. Она состоит из любой строки, назначенной поставщиком этой реализации, и не имеет какого-либо конкретного синтаксиса, заданного или ожидаемого Java-средой выполнения. Она может сравниваться на равенство с другими строками версии пакета, используемыми этим поставщиком для этой реализации пакета.
Возвращает:
версия реализации, null если она неизвестна.

getImplementationVendor

public String getImplementationVendor()
Возвращает поставщика, реализовавшего этот пакет, null если он неизвестен.
Возвращает:
поставщик, реализовавший этот пакет, null если он неизвестен.

isSealed

public boolean isSealed()
Возвращает true, если этот пакет запечатан.
Примечание API:
Запечатывание пакетов не имеет отношения к запечатанным классам или интерфейсам. Запечатывание пакетов специфично для JAR-файлов, определенных для классов в безымянном модуле. Смотрите спецификацию класса Package для получения подробной информации о том, как пакет определяется как запечатанный. Package
Возвращает:
true, если пакет запечатан, иначе false

isSealed

public boolean isSealed(URL url)
Возвращает true, если этот пакет запечатан относительно указанного источника кода url.
Примечание API:
Запечатывание пакетов не имеет отношения к запечатанным классам или интерфейсам. Запечатывание пакетов специфично для JAR-файлов, определенных для классов в безымянном модуле. Смотрите спецификацию класса Package для получения подробной информации о том, как пакет определяется как запечатанный. Package
Параметры:
url - URL источника кода
Возвращает:
true, если этот пакет запечатан относительно данного url

isCompatibleWith

public boolean isCompatibleWith(String desired) throws NumberFormatException
Сравнивает версию спецификации этого пакета с желаемой версией. Возвращает true, если номер версии спецификации этого пакета больше или равен номеру желаемой версии.

Версии сравниваются путем последовательного сравнения соответствующих компонентов строк желаемой и спецификации. Каждый компонент преобразуется в десятичное целое число и значения сравниваются. Если значение спецификации больше желаемого значения, возвращается true. Если значение меньше, возвращается false. Если значения равны, период пропускается, и сравниваются следующие пары компонентов.

Параметры:
desired - строка версии желаемой версии.
Возвращает:
true, если номер версии этого пакета больше или равен желаемому номеру версии
Исключения:
NumberFormatException - если текущая версия неизвестна или желаемая или текущая версия не имеют правильной формы с точками.

getPackage

@Deprecated(since="9") public static Package getPackage(String name)
Устарело.
Если несколько загрузчиков классов делегируют друг другу и определяют классы с одинаковым именем пакета, и один из таких загрузчиков полагается на поведение поиска getPackage для возврата Package от родительского загрузчика, то свойства, экспонируемые Package, могут не соответствовать ожидаемому в остальной части программы. Например, Package будет экспонировать только аннотации из файла package-info.class, определенного родительским загрузчиком, даже если аннотации существуют в файле package-info.class, определенном дочерним загрузчиком. Более надежный подход заключается в использовании метода ClassLoader.getDefinedPackage(java.lang.String), который возвращает Package для указанного загрузчика классов.
Ищет пакет по имени в загрузчике классов вызывающего метода и его предках.

Если загрузчик классов вызывающего метода определяет Package с данным именем, возвращается Package. В противном случае, предки загрузчика классов вызывающего метода ищутся рекурсивно (родитель за родителем) для поиска Package с данным именем.

Вызов этого метода эквивалентен вызову ClassLoader.getPackage(java.lang.String) на экземпляре ClassLoader, который является загрузчиком классов вызывающего метода.

Параметры:
name - Имя пакета, например "java.lang".
Возвращает:
Package с данным именем, определенное загрузчиком классов вызывающего метода или его предками, или null если не найдено.
Исключения:
NullPointerException - если name является null.
См. также:
  • ClassLoader.getDefinedPackage(java.lang.String)

getPackages

public static Package[] getPackages()
Возвращает все Package, определенные загрузчиком классов вызывающего метода и его предками. Возвращаемый массив может содержать более одного объекта Package с одинаковым именем пакета, каждый определен различными загрузчиками классов в иерархии загрузчиков классов.

Вызов этого метода эквивалентен вызову ClassLoader.getPackages() на экземпляре ClassLoader, который является загрузчиком классов вызывающего метода.

Возвращает:
Массив объектов Package, определенных этим загрузчиком классов и его предками
См. также:
  • ClassLoader.getDefinedPackages()

hashCode

public int hashCode()
Возвращает хэш-код, вычисленный по имени пакета.
Переопределяет:
hashCode в классе Object
Возвращает:
хэш-код, вычисленный по имени пакета.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

public String toString()
Возвращает строковое представление этого пакета. Его значение - строка "пакет " и имя пакета. Если определен заголовок пакета, он добавляется. Если определена версия пакета, она добавляется.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление пакета.

getAnnotation

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

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

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

isAnnotationPresent

public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Возвращает true, если аннотация для указанного типа присутствует в этом элементе, иначе false. Этот метод предназначен в основном для удобного доступа к аннотациям-маркерам.

Значение булевого типа, возвращаемое этим методом, эквивалентно: getAnnotation(annotationClass) != null

Specified by:
isAnnotationPresent в интерфейсе AnnotatedElement
Parameters:
annotationClass - объект Class, соответствующий типу аннотации
Returns:
true, если аннотация для указанного типа аннотации присутствует в этом элементе, иначе false
Throws:
NullPointerException - если переданный класс аннотации равен null
Since:
1.5

getAnnotationsByType

public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
Возвращает аннотации, связанные с этим элементом. Если с этим элементом нет связанных аннотаций, возвращаемое значение — массив длины 0. Разница между этим методом и AnnotatedElement.getAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и в случае положительного результата пытается найти одну или несколько аннотаций этого типа, "просматривая" контейнерную аннотацию. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.

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

Specified by:
getAnnotationsByType в интерфейсе AnnotatedElement
Type Parameters:
A - тип аннотации, для которой выполняется запрос и возвращается, если она присутствует
Parameters:
annotationClass - объект Class, соответствующий типу аннотации
Returns:
все аннотации элемента для указанного типа аннотации, если они связаны с этим элементом, иначе массив длины ноль
Throws:
NullPointerException - если переданный класс аннотации равен null
Since:
1.8

getAnnotations

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

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

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

getDeclaredAnnotation

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

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

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

getDeclaredAnnotationsByType

public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотацию(и) этого элемента для указанного типа, если такие аннотации либо непосредственно присутствуют, либо косвенно присутствуют. Этот метод игнорирует унаследованные аннотации. Если указанные аннотации не присутствуют непосредственно или косвенно в этом элементе, возвращаемое значение — массив длины 0. Разница между этим методом и AnnotatedElement.getDeclaredAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и в случае положительного результата пытается найти одну или несколько аннотаций этого типа, "просматривая" контейнерную аннотацию, если она присутствует. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.
Specified by:
getDeclaredAnnotationsByType в интерфейсе AnnotatedElement
Type Parameters:
A - тип аннотации, для которого выполняется запрос и возвращается, если она непосредственно или косвенно присутствует
Parameters:
annotationClass - объект Class, соответствующий типу аннотации
Returns:
все аннотации элемента для указанного типа аннотации, если они непосредственно или косвенно присутствуют в этом элементе, иначе массив длины ноль
Throws:
NullPointerException - если переданный класс аннотации равен null
Since:
1.8

getDeclaredAnnotations

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

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

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

© 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/Package.html

Spec-Zone.ru

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