Spec-Zone.ru › OpenJDK 25

Класс Package

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

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

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

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().

Примечание по реализации:
Встроенные загрузчики классов не определяют явно объекты Package для пакетов в именованных модулях. Вместо этого такие пакеты определяются автоматически и не содержат сведений о версиях спецификации и реализации.
См. Спецификацию виртуальной машины Java:
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)
Устарело.
Если несколько загрузчиков классов делегируют друг другу загрузку и определяют классы с одинаковым именем пакета, и один из таких загрузчиков полагается на поведение поиска 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()
Возвращает строковое представление этого Package.

Методы, объявленные в классе 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(String), который возвращает Package для указанного загрузчика классов.
Находит пакет по имени в загрузчике классов вызывающего кода и его предках.

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

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

Параметры:
name — имя пакета, например "java.lang".
Возвращает:
Package с указанным именем, определённый загрузчиком классов вызывающего кода или его предками, либо null, если пакет не найден.
Вызывает исключение:
NullPointerException — если name имеет значение null.
См. также:
  • ClassLoader.getDefinedPackage(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(Object)

toString

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

getAnnotation

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

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

Определено в:
getAnnotation в интерфейсе AnnotatedElement
Параметры типа:
A — тип аннотации, которую нужно найти и вернуть, если она присутствует
Параметры:
annotationClass — объект Class, соответствующий типу аннотации
Возвращает:
аннотацию этого элемента указанного типа, если она присутствует у этого элемента, иначе null
Вызывает исключение:
NullPointerException — если переданный класс аннотации равен null
Начиная с версии:
1.5

isAnnotationPresent

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

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

Определено в:
isAnnotationPresent в интерфейсе AnnotatedElement
Параметры:
annotationClass — объект Class, соответствующий типу аннотации
Возвращает:
true, если аннотация указанного типа присутствует у этого элемента, иначе false
Вызывает исключение:
NullPointerException — если переданный класс аннотации равен null
Начиная с версии:
1.5

getAnnotationsByType

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

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

Определено в:
getAnnotationsByType в интерфейсе AnnotatedElement
Параметры типа:
A — тип аннотации, которую нужно найти и вернуть, если она присутствует
Параметры:
annotationClass — объект Class, соответствующий типу аннотации
Возвращает:
все аннотации этого элемента указанного типа, связанные с этим элементом, либо массив нулевой длины
Вызывает исключение:
NullPointerException — если переданный класс аннотации равен null
Начиная с версии:
1.8

getAnnotations

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

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

Определено в:
getAnnotations в интерфейсе AnnotatedElement
Возвращает:
аннотации, присутствующие у этого элемента
Начиная с версии:
1.5

getDeclaredAnnotation

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

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

Определено в:
getDeclaredAnnotation в интерфейсе AnnotatedElement
Параметры типа:
A — тип аннотации, которую нужно найти и вернуть, если она присутствует непосредственно
Параметры:
annotationClass — объект Class, соответствующий типу аннотации
Возвращает:
аннотацию этого элемента указанного типа, если она присутствует непосредственно у этого элемента, иначе null
Вызывает исключение:
NullPointerException — если переданный класс аннотации равен null
Начиная с версии:
1.8

getDeclaredAnnotationsByType

public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотацию или аннотации этого элемента указанного типа, если такие аннотации присутствуют непосредственно или присутствуют косвенно. Этот метод игнорирует унаследованные аннотации. Если у этого элемента нет непосредственно или косвенно присутствующих указанных аннотаций, возвращается массив длины 0. Этот метод отличается от метода AnnotatedElement.getDeclaredAnnotation(Class) тем, что определяет, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и, если да, пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию, если она имеется. Вызывающий код может изменять возвращённый массив; это никак не повлияет на массивы, возвращаемые другим вызывающим кодам.
Определено в:
getDeclaredAnnotationsByType в интерфейсе AnnotatedElement
Параметры типа:
A — тип аннотации, которую нужно найти и вернуть, если она присутствует непосредственно или косвенно
Параметры:
annotationClass — объект Class, соответствующий типу аннотации
Возвращает:
все аннотации этого элемента указанного типа, если они присутствуют у этого элемента непосредственно или косвенно, иначе массив нулевой длины
Вызывает исключение:
NullPointerException — если переданный класс аннотации равен null
Начиная с версии:
1.8

getDeclaredAnnotations

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

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

Определено в:
getDeclaredAnnotations в интерфейсе AnnotatedElement
Возвращает:
аннотации, непосредственно присутствующие у этого элемента
Начиная с версии:
1.5

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Package.html

Spec-Zone.ru

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