Класс 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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<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() |
Возвращает все Package, определённые загрузчиком классов вызывающего кода и его предками. |
String |
getSpecificationTitle() |
Возвращает название спецификации, которую реализует этот пакет. |
String |
getSpecificationVendor() |
Возвращает название организации, поставщика или компании, владеющей спецификацией классов, реализующих этот пакет, и поддерживающей её. |
String |
getSpecificationVersion() |
Возвращает номер версии спецификации, которую реализует этот пакет. |
int |
hashCode() |
Возвращает хеш-код, вычисленный на основе имени пакета. |
boolean |
isAnnotationPresent |
Возвращает true, если аннотация указанного типа присутствует у этого элемента, иначе false. |
boolean |
isCompatibleWith |
Сравнивает версию спецификации этого пакета с требуемой версией. |
boolean |
isSealed() |
Возвращает true, если этот пакет запечатан. |
boolean |
isSealed |
Возвращает true, если этот пакет запечатан относительно указанного источника кода url. |
String |
toString() |
Возвращает строковое представление этого Package. |
Подробное описание методов
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(String), который возвращает Package для указанного загрузчика классов. Если загрузчик классов вызывающего кода определяет Package с указанным именем, возвращается Package. В противном случае предки загрузчика классов вызывающего кода рекурсивно просматриваются (по одному родителю за раз) в поисках Package с указанным именем.
Вызов этого метода эквивалентен вызову ClassLoader.getPackage(String) для экземпляра ClassLoader, являющегося загрузчиком классов вызывающего кода.
- Параметры:
-
name— имя пакета, например "java.lang". - Возвращает:
Packageс указанным именем, определённый загрузчиком классов вызывающего кода или его предками, либоnull, если пакет не найден.- Вызывает исключение:
-
NullPointerException— еслиnameимеет значениеnull. - См. также:
getPackages
public static Package[] getPackages()
Package, определённые загрузчиком классов вызывающего кода и его предками. Возвращённый массив может содержать более одного объекта Package с одинаковым именем пакета, каждый из которых определён отдельным загрузчиком классов в иерархии загрузчиков классов. Вызов этого метода эквивалентен вызову ClassLoader.getPackages() для экземпляра ClassLoader, являющегося загрузчиком классов вызывающего кода.
- Возвращает:
- массив объектов
Package, определённых этим загрузчиком классов и его предками - См. также:
hashCode
toString
public String toString()
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
Обратите внимание, что любая аннотация, возвращённая этим методом, является аннотацией объявления.
- Определено в:
-
getAnnotationв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую нужно найти и вернуть, если она присутствует- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- аннотацию этого элемента указанного типа, если она присутствует у этого элемента, иначе null
- Вызывает исключение:
-
NullPointerException— если переданный класс аннотации равен null - Начиная с версии:
- 1.5
isAnnotationPresent
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Значение, возвращаемое этим методом, эквивалентно: getAnnotation(annotationClass) != null
- Определено в:
-
isAnnotationPresentв интерфейсеAnnotatedElement - Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- true, если аннотация указанного типа присутствует у этого элемента, иначе false
- Вызывает исключение:
-
NullPointerException— если переданный класс аннотации равен null - Начиная с версии:
- 1.5
getAnnotationsByType
public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
AnnotatedElement.getAnnotation(Class) тем, что определяет, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и, если да, пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию. Вызывающий код может изменять возвращённый массив; это никак не повлияет на массивы, возвращаемые другим вызывающим кодам. Обратите внимание, что любые аннотации, возвращённые этим методом, являются аннотациями объявления.
- Определено в:
-
getAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую нужно найти и вернуть, если она присутствует- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента указанного типа, связанные с этим элементом, либо массив нулевой длины
- Вызывает исключение:
-
NullPointerException— если переданный класс аннотации равен null - Начиная с версии:
- 1.8
getAnnotations
public Annotation[] getAnnotations()
Обратите внимание, что любые аннотации, возвращённые этим методом, являются аннотациями объявления.
- Определено в:
-
getAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, присутствующие у этого элемента
- Начиная с версии:
- 1.5
getDeclaredAnnotation
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
Обратите внимание, что любая аннотация, возвращённая этим методом, является аннотацией объявления.
- Определено в:
-
getDeclaredAnnotationв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую нужно найти и вернуть, если она присутствует непосредственно- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- аннотацию этого элемента указанного типа, если она присутствует непосредственно у этого элемента, иначе null
- Вызывает исключение:
-
NullPointerException— если переданный класс аннотации равен null - Начиная с версии:
- 1.8
getDeclaredAnnotationsByType
public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
AnnotatedElementAnnotatedElement.getDeclaredAnnotation(Class) тем, что определяет, является ли его аргумент повторяемым типом аннотации (JLS 9.6), и, если да, пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию, если она имеется. Вызывающий код может изменять возвращённый массив; это никак не повлияет на массивы, возвращаемые другим вызывающим кодам.- Определено в:
-
getDeclaredAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
A— тип аннотации, которую нужно найти и вернуть, если она присутствует непосредственно или косвенно- Параметры:
-
annotationClass— объект Class, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента указанного типа, если они присутствуют у этого элемента непосредственно или косвенно, иначе массив нулевой длины
- Вызывает исключение:
-
NullPointerException— если переданный класс аннотации равен null - Начиная с версии:
- 1.8
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Обратите внимание, что любые аннотации, возвращённые этим методом, являются аннотациями объявления.
- Определено в:
-
getDeclaredAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, непосредственно присутствующие у этого элемента
- Начиная с версии:
- 1.5
© 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
getPackage, чтобы вернутьPackageиз родительского загрузчика, свойства, предоставляемыеPackage, могут не соответствовать ожиданиям остальной части программы.