Класс Package
- java.lang.Object
-
- java.lang.Package
- Все реализованные интерфейсы:
AnnotatedElement
public class Package extends Object implements AnnotatedElement
Представляет метаданные о пакете во время выполнения, связанном с загрузчиком классов. Метаданные включают аннотации, версионирование и герметизацию.
Аннотации для пакета во время выполнения считываются из package-info.class в том же источнике кода, что и классы в пакете во время выполнения.
Набор классов, составляющих пакет во время выполнения, может реализовывать определенный стандарт. Заголовок стандарта, версия и поставщик (указывающий владельца/администратора стандарта) могут быть предоставлены при определении Package. Приложение может проверить совместимость Package с определенной версией стандарта, используя метод Package.isCompatibleWith(String). Кроме того, при определении пакета может быть предоставлена информация об actual классах, составляющих пакет во время выполнения. Эта информация состоит из заголовка реализации, версии и поставщика (указывающего поставщика классов).
Пакет во время выполнения может быть явно определен с помощью метода 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для пакетов в именованных модулях. Вместо этого эти пакеты определяются автоматически и не содержат информации о версионировании спецификации и реализации. - С:
- 1.2
- См. также:
-
Спецификация файла JAR: Герметизация пакетов,
ClassLoader.definePackage(String, String, String, String, String, String, String, URL)
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
<A extends Annotation> | getAnnotation(Class<A> annotationClass) | Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null. |
Annotation[] | getAnnotations() | Возвращает аннотации, которые присутствуют на этом элементе. |
<A extends Annotation> | getAnnotationsByType(Class<A> annotationClass) | Возвращает аннотации, которые связаны с этим элементом. |
<A extends Annotation> | getDeclaredAnnotation(Class<A> annotationClass) | Возвращает аннотацию этого элемента для указанного типа, если такая аннотация непосредственно присутствует, иначе null. |
Annotation[] | getDeclaredAnnotations() | Возвращает аннотации, которые непосредственно присутствуют на этом элементе. |
<A extends Annotation> | getDeclaredAnnotationsByType(Class<A> annotationClass) | Возвращает аннотацию(и) этого элемента для указанного типа, если такие аннотации непосредственно присутствуют или косвенно присутствуют. |
String | getImplementationTitle() | Возвращает заголовок этого пакета. |
String | getImplementationVendor() | Возвращает поставщика, который реализовал этот пакет, |
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, если этот пакет герметичен относительно указанного источника кода |
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, если этот пакет запечатан.
- Возвращает:
- true, если пакет запечатан, иначе false
isSealed
public boolean isSealed(URL url)
Возвращает true, если этот пакет запечатан относительно указанного источника кода url.
- Параметры:
-
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()
Возвращает строковое представление этого пакета. Его значение — строка "пакет " и имя пакета. Если определен заголовок пакета, он добавляется. Если определена версия пакета, она добавляется.
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null.
- Определено в:
-
getAnnotationв интерфейсеAnnotatedElement - Параметры типа:
-
A- тип аннотации для запроса и возврата, если она присутствует - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- аннотация элемента для указанного типа аннотации, если она присутствует в этом элементе, иначе null
- Исключение:
-
NullPointerException- если заданный класс аннотации равен null - С тех пор:
- 1.5
isAnnotationPresent
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Возвращает true, если аннотация для указанного типа присутствует в этом элементе, иначе false. Этот метод предназначен в первую очередь для удобного доступа к аннотациям-маркерам.
Логическое значение, возвращаемое этим методом, эквивалентно: getAnnotation(annotationClass) != null
Тело метода по умолчанию задано как код выше.
- Определено в:
-
isAnnotationPresentв интерфейсеAnnotatedElement - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- true, если аннотация для указанного типа аннотации присутствует в этом элементе, иначе false
- Исключение:
-
NullPointerException- если заданный класс аннотации равен null - С тех пор:
- 1.5
getAnnotationsByType
public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотации, связанные с этим элементом. Если аннотаций, связанных с этим элементом, нет, возвращаемое значение — массив длиной 0. Разница между этим методом и AnnotatedElement.getAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент типом повторяющейся аннотации (JLS 9.6), и если да, то пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию. Вызывающий метод имеет право изменять возвращаемый массив; это не повлияет на массивы, возвращенные другим вызывающим методам.
- Указано в:
-
getAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
-
A- тип аннотации, для которой нужно выполнить поиск и вернуть её, если она присутствует - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- все аннотации данного элемента для указанного типа аннотации, если они ассоциированы с этим элементом, иначе массив длиной ноль
- Исключения:
-
NullPointerException- если переданный класс аннотации равен null - С:
- 1.8
getAnnotations
public Annotation[] getAnnotations()
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотации, которые присутствуют на этом элементе. Если на этом элементе нет аннотаций, то возвращается массив длиной 0. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызовам.
- Указано в:
-
getAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, присутствующие на этом элементе
- С:
- 1.5
getDeclaredAnnotation
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация непосредственно присутствует, иначе null. Этот метод игнорирует унаследованные аннотации. (Возвращает null, если на этом элементе нет непосредственно присутствующих аннотаций.)
- Указано в:
-
getDeclaredAnnotationв интерфейсеAnnotatedElement - Параметры типа:
-
A- тип аннотации, для которой нужно выполнить поиск и вернуть её, если она непосредственно присутствует - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- аннотация этого элемента для указанного типа аннотации, если она непосредственно присутствует на этом элементе, иначе 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- объект класса, соответствующий типу аннотации - Возвращает:
- все аннотации данного элемента для указанного типа аннотации, если они непосредственно или косвенно присутствуют на этом элементе, иначе массив длиной ноль
- Исключения:
-
NullPointerException- если переданный класс аннотации равен null - С:
- 1.8
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотации, которые непосредственно присутствуют на этом элементе. Этот метод игнорирует унаследованные аннотации. Если на этом элементе нет непосредственно присутствующих аннотаций, то возвращается массив длиной 0. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызовам.
- Указано в:
-
getDeclaredAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- непосредственно присутствующие на этом элементе аннотации
- С:
- 1.5
© 1993, 2020, 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/11/docs/api/java.base/java/lang/Package.html