Класс 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() |
Возвращает все Packages, определенные загрузчиком классов вызывающего кода и его предками. |
String |
getSpecificationTitle() |
Возвращает название спецификации, которую реализует этот пакет. |
String |
getSpecificationVendor() |
Возвращает имя организации, поставщика или компании, которой принадлежит спецификация классов, реализующих этот пакет, и которая отвечает за ее сопровождение. |
String |
getSpecificationVersion() |
Возвращает номер версии спецификации, которую реализует этот пакет. |
int |
hashCode() |
Возвращает хеш-код, вычисленный на основе имени пакета. |
boolean |
isAnnotationPresent |
Возвращает true, если аннотация указанного типа присутствует у этого элемента; в противном случае возвращает false. |
boolean |
isCompatibleWith |
Сравнивает версию спецификации этого пакета с требуемой версией. |
boolean |
isSealed() |
Возвращает true, если этот пакет запечатан. |
boolean |
isSealed |
Возвращает true, если этот пакет запечатан относительно указанного источника кода url. |
String |
toString() |
Возвращает строковое представление этого Package. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
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()
- Возвращает:
- версию реализации; если она неизвестна, возвращается
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.
getPackageдля возвратаPackageиз родительского загрузчика, то свойства, предоставляемыеPackage, могут отличаться от ожидаемых в остальной части программы.