java.lang

接口
异常
错误
注释
java.lang.Object
  继承者 java.lang.Package
所有已实现的接口:
AnnotatedElement

public class Package
     
extends Object
implements AnnotatedElement

Package 对象包含有关 Java 包的实现和规范的版本信息。通过用于加载类的 ClassLoader 实例,可以获取并获得此版本信息。通常,此信息存储在与类一起分发的清单中。

组成包的类集可以实现一个特定规范,如此一来,就可以通过规范标题、版本号和供应商字符串来标识该规范。应用程序可以询问包是否与特定版本兼容,有关详细信息,请参阅 isCompatibleWith 方法。

规范的版本号使用了一个由句点 "." 分隔的十进制正整数组成的语法,例如 "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 等等。

实现标题、版本和供应商字符串共同标识了一个实现,并且可以很方便地使用它们来支持出现问题时所涉及的包的准确报告。三个实现字符串内容都是特定于供应商的。实现版本字符串没有特定的语法,并且应该只在为了使它们等同于所需的版本标识符时对它们进行比较。

在每一个 ClassLoader 实例中,相同 java 包中的所有类都有相同的 Package 对象。静态方法允许通过名称或当前类加载器已知的所有包的集合来找到包。

另请参见:
ClassLoader.definePackage(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.net.URL)

方法摘要
<A extends Annotation>
A
getAnnotation(Class<A> annotationClass)
          如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
 Annotation[] getAnnotations()
          返回此元素上存在的所有注释。
 Annotation[] getDeclaredAnnotations()
          返回直接存在于此元素上的所有注释。
 String getImplementationTitle()
          返回此包的标题。
 String getImplementationVendor()
          返回提供该实现的组织、供应商或公司的名称。
 String getImplementationVersion()
          返回该实现的版本。
 String getName()
          返回此包的名称。
static Package getPackage(String name)
          通过调用方的 ClassLoader 实例中的名称找到一个包。
static Package[] getPackages()
          获得调用方的 ClassLoader 实例当前已知的所有包。
 String getSpecificationTitle()
          返回此包实现的规范标题。
 String getSpecificationVendor()
          返回拥有并维护实现此包的类规范的组织、供应商或公司的名称。
 String getSpecificationVersion()
          返回此包实现的规范的版本号。
 int hashCode()
          返回从包名称计算的哈希码。
 boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
          如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。
 boolean isCompatibleWith(String desired)
          比较此包的规范版本和所需版本。
 boolean isSealed()
          如果此包是密封的,则返回 ture。
 boolean isSealed(URL url)
          如果此包对于指定的代码源 url 是密封的,则返回 ture。
 String toString()
          返回此 Package 的字符串表示形式。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

方法详细信息

getName

public String getName()
返回此包的名称。

返回:
根据 Java 语言规范第三版 §6.5.3 中的定义,返回此包的完全限定名,例如 java.lang

getSpecificationTitle

public String getSpecificationTitle()
返回此包实现的规范标题。

返回:
规范的标题,如果不知道此标题,则返回 null。

getSpecificationVersion

public String getSpecificationVersion()
返回此包实现的规范的版本号。该版本字符串必须是以 "." 分隔的十进制正整数的序列,并可能有前导零。在比较版本字符串时,比较最重要的数字。

返回:
规范版本,如果不知道该版本,则返回 null。

getSpecificationVendor

public String getSpecificationVendor()
返回拥有并维护实现此包的类规范的组织、供应商或公司的名称。

返回:
规范的供应商,如果不知道此供应商,则返回 null。

getImplementationTitle

public String getImplementationTitle()
返回此包的标题。

返回:
实现的标题,如果不知道此标题,则返回 null。

getImplementationVersion

public String getImplementationVersion()
返回该实现的版本。它由该实现的供应商分配的任何字符串组成,并且没有任何由 Java 运行时指定或需要的特定语法。可以对实现的版本进行比较,使其等同于此包的供应商用于该实现的其他包版本字符串。

返回:
实现的版本,如果不知道此版本,则返回 null。

getImplementationVendor

public String getImplementationVendor()
返回提供该实现的组织、供应商或公司的名称。

返回:
实现此包的供应商。

isSealed

public boolean isSealed()
如果此包是密封的,则返回 ture。

返回:
如果包是密封的,则返回 ture,否则返回 false。

isSealed

public boolean isSealed(URL url)
如果此包对于指定的代码源 url 是密封的,则返回 ture。

参数:
url - 代码源 url
返回:
如果此包对于 url 是密封的,则返回 ture

isCompatibleWith

public boolean isCompatibleWith(String desired)
                         throws NumberFormatException
比较此包的规范版本和所需版本。如果此包的规范版本号大于或等于所需版本号,则返回 ture。

通过按顺序比较所需字符串和规范字符串的对应组件,对版本号进行比较。每个组件都被转换为一个十进制整数和比较的值。如果规范值大于所需值,则返回 true。如果小于所需值,则返回 false。如果两个值相等,则跳过这一比较周期,比较下一对组件。

参数:
desired - 所需版本的版本字符串。
返回:
如果此包的版本号大于或等于所需的版本号,则返回 ture。
抛出:
NumberFormatException - 如果所需版本或当前版本的点形式不正确。

getPackage

public static Package getPackage(String name)
通过调用方的 ClassLoader 实例中的名称找到一个包。调用方的 ClassLoader 实例用于找到对应于指定类的包实例。如果调用方的 ClassLoader 实例为 null,则搜索系统的 ClassLoader 实例加载的包集合,以找到指定包。

只有类加载器创建了具有适当属性的包实例,包中才会有规范和版本属性。通常,这些属性定义在随类一起提供的清单中。

参数:
name - 包名称,例如,java.lang。
返回:
具有所请求名称的包。如果不能从存档或基本代码中获得包信息,则可能返回 null。

getPackages

public static Package[] getPackages()
获得调用方的 ClassLoader 实例当前已知的所有包。这些包对应于通过 ClassLoader 实例中的名称加载或访问的类。如果调用方的 ClassLoader 实例是引导程序的 ClassLoader 实例(它在一些实现中可能用 null 表示),则只返回通过引导程序的 ClassLoader 实例加载的类所对应的包。

返回:
调用方的 ClassLoader 实例已知的包的新数组。如果没有已知的包,则返回零长度的数组。

hashCode

public int hashCode()
返回从包名称计算的哈希码。

覆盖:
Object 中的 hashCode
返回:
从包名称计算的哈希码。
另请参见:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
返回此 Package 的字符串表示形式。它的值是字符串 "package" 和包名称。如果定义了包的标题,则追加包的标题。如果定义了包的版本,则追加包的版本。

覆盖:
Object 中的 toString
返回:
包的字符串表示形式。

getAnnotation

public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
从接口 AnnotatedElement 复制的描述
如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。

指定者:
接口 AnnotatedElement 中的 getAnnotation
参数:
annotationClass - 对应于注释类型的 Class 对象
返回:
如果该元素的指定注释类型的注释存在于此对象上,则返回这些注释,否则返回 null
抛出:
NullPointerException - 如果给定的注释类为 null
从以下版本开始:
1.5

isAnnotationPresent

public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
从接口 AnnotatedElement 复制的描述
如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。此方法主要是为了便于访问标记注释而设计的。

指定者:
接口 AnnotatedElement 中的 isAnnotationPresent
参数:
annotationClass - 对应于注释类型的 Class 对象
返回:
如果指定注释类型的注释存在于此对象上,则返回 true,否则返回 false
抛出:
NullPointerException - 如果给定的注释类为 null
从以下版本开始:
1.5

getAnnotations

public Annotation[] getAnnotations()
从接口 AnnotatedElement 复制的描述
返回此元素上存在的所有注释。(如果此元素没有注释,则返回长度为零的数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。

指定者:
接口 AnnotatedElement 中的 getAnnotations
返回:
此元素上存在的所有注释
从以下版本开始:
1.5

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()
从接口 AnnotatedElement 复制的描述
返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。

指定者:
接口 AnnotatedElement 中的 getDeclaredAnnotations
返回:
直接存在于此元素上的所有注释
从以下版本开始:
1.5