Spec-Zone.ru › OpenJDK 21

Класс 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-info.class как указано выше.

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

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

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

Примечание реализации:
Встроенные загрузчики классов (builtin class loaders) не определяют явно объекты 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()
Возвращает строковое представление этого пакета.

Методы, объявленные в классе 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()
Возвращает строковое представление этого пакета. Его значение представляет собой строку "package " и имя пакета. Если заголовок пакета определен, он добавляется. Если версия пакета определена, она добавляется.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление пакета.

getAnnotation

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

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

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

getDeclaredAnnotations

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

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

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

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

Spec-Zone.ru

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