Spec-Zone.ru › OpenJDK 17

Класс Package

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

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

Набор классов, составляющих пакет во время выполнения, может реализовывать определённый стандарт. Заголовок, версия и поставщик стандарта (указывающий владельца/поддерживающего стандарт) могут быть указаны при определении Package. Приложение может запросить совместимость Package с определённой версией стандарта, используя метод Package.isCompatibleWith(String). Кроме того, информация об actual классах, составляющих пакет во время выполнения, может быть предоставлена при определении 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 Создание и загрузка
C тех пор:
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()
Возвращает поставщика, реализовавшего этот пакет, если информация не известна, возвращается %%%CODE_BLOCK_40%%.
String getImplementationVersion()
Возвращает версию данной реализации.
String getName()
Возвращает имя этого пакета.
static Package getPackage(String name)
Устарело.
Если несколько загрузчиков классов делегируют друг другу и определяют классы с одинаковыми именами пакетов, а один из таких загрузчиков использует поведение поиска getPackage для возвращения пакета Package из родительского загрузчика, тогда свойства, предоставляемые Package могут не соответствовать ожиданиям в остальной части программы.
static Package[] getPackages()
Возвращает все пакеты, определённые загрузчиком вызывающего кода и его предками.
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.

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

Определено в:
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

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

Spec-Zone.ru

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