Spec-Zone.ru › OpenJDK 27

Класс 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()
Возвращает все Packages, определенные загрузчиком классов вызывающего кода и его предками.
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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

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, 2026, 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.

Spec-Zone.ru

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