Класс 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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<A extends Annotation> |
getAnnotation |
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null. |
Annotation[] |
getAnnotations() |
Возвращает аннотации, которые присутствуют на этом элементе. |
<A extends Annotation> |
getAnnotationsByType |
Возвращает аннотации, которые связаны с этим элементом. |
<A extends Annotation> |
getDeclaredAnnotation |
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация непосредственно присутствует, иначе null. |
Annotation[] |
getDeclaredAnnotations() |
Возвращает аннотации, которые непосредственно присутствуют на этом элементе. |
<A extends Annotation> |
getDeclaredAnnotationsByType |
Возвращает аннотации(и) этого элемента для указанного типа, если такие аннотации непосредственно присутствуют или косвенно присутствуют. |
String |
getImplementationTitle() |
Возвращает заголовок этого пакета. |
String |
getImplementationVendor() |
Возвращает поставщика, реализовавшего этот пакет, null возвращается, если он неизвестен. |
String |
getImplementationVersion() |
Возвращает версию этой реализации. |
String |
getName() |
Возвращает имя этого пакета. |
static Package |
getPackage |
Устарело. |
static Package[] |
getPackages() |
Возвращает все Packages, определённые загрузчиком вызывающей стороны и его предками. |
String |
getSpecificationTitle() |
Возвращает заголовок стандарта, реализуемого этим пакетом. |
String |
getSpecificationVendor() |
Возвращает имя организации, поставщика или компании, владеющей и поддерживающей спецификацию классов, реализующих этот пакет. |
String |
getSpecificationVersion() |
Возвращает номер версии стандарта, реализуемого этим пакетом. |
int |
hashCode() |
Возвращает хэш-код, вычисленный по имени пакета. |
boolean |
isAnnotationPresent |
Возвращает true, если аннотация для указанного типа присутствует на этом элементе, иначе false. |
boolean |
isCompatibleWith |
Сравнивает версию стандарта этого пакета с желаемой версией. |
boolean |
isSealed() |
Возвращает true, если этот пакет уплотнён. |
boolean |
isSealed |
Возвращает true, если этот пакет уплотнён относительно указанного источника кода url. |
String |
toString() |
Возвращает строковое представление этого пакета. |
Подробное описание методов
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()
- Возвращает:
- версию реализации,
nullвозвращается, если она неизвестна.
getImplementationVendor
public String getImplementationVendor()
null возвращается, если он неизвестен.- Возвращает:
- поставщика, реализовавшего этот пакет,
nullвозвращается, если он неизвестен.
isSealed
public boolean isSealed()
- Примечание API:
-
Запечатывание пакетов не имеет отношения к запечатанным классам или интерфейсам. Запечатывание пакетов относится к файлам JAR, определенным для классов в безымянном модуле. См. спецификацию класса
Packageдля подробностей о том, как пакетPackageопределяется как запечатанный. - Возвращает:
- true, если пакет запечатан, иначе false
isSealed
public boolean isSealed(URL url)
url.- Примечание API:
-
Запечатывание пакетов не имеет отношения к запечатанным классам или интерфейсам. Запечатывание пакетов относится к файлам JAR, определенным для классов в безымянном модуле. См. спецификацию класса
Packageдля подробностей о том, как пакетPackageопределяется как запечатанный. - Параметры:
-
url- URL источника кода - Возвращает:
- true, если этот пакет запечатан относительно данного
url
isCompatibleWith
public boolean isCompatibleWith(String desired) throws NumberFormatException
Версии сравниваются последовательным сравнением соответствующих компонентов строк желаемой и спецификационной версии. Каждый компонент преобразуется в целое десятичное число и значения сравниваются. Если значение спецификации больше желаемого значения, возвращается 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- еслиnamenull. - См. также:
getPackages
public static Package[] getPackages()
Package , определенные загрузчиком класса вызывающего кода и его предками. Возвращаемый массив может содержать более одного объекта Package с одинаковым именем пакета, каждый из которых определен другим загрузчиком классов в иерархии загрузчиков классов. Вызов этого метода эквивалентен вызову ClassLoader.getPackages() на экземпляре ClassLoader , который является загрузчиком класса вызывающего кода.
- Возвращает:
- Массив объектов
Package, определенных этим загрузчиком классов и его предками - См. также:
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- хеш-код, вычисленный из имени пакета.
- См. также:
toString
public String toString()
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление пакета.
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления.
- 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)
Значение истинности, возвращаемое этим методом, эквивалентно: 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)
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()
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.
- Specified by:
-
getAnnotationsв интерфейсеAnnotatedElement - Returns:
- аннотации, присутствующие в этом элементе
- Since:
- 1.5
getDeclaredAnnotation
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией объявления.
- 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)
AnnotatedElementAnnotatedElement.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()
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями объявления.
- 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
getPackageдля возвращенияPackageот родительского загрузчика, то свойства, представленныеPackage, могут не соответствовать ожиданиям в остальной части программы.