public class 软件包 extends Object implements AnnotatedElement
软件包
对象包含有关Java包的实现和规范的版本信息。
该版本信息由加载该类的ClassLoader
实例检索并提供。
通常,它存储在与类分发的清单中。
构成包的一组类可以实现特定的规范,如果是这样,则规范标题,版本号和供应商字符串标识该规范。 应用程序可以询问该软件包是否与特定版本兼容 ,有关详细信息,请参阅isCompatibleWith
方法。
规范版本号使用由句点“。”分隔的非负十进制整数组成的语法,例如“2.0”或“1.2.3.4.5.6.7”。 这允许使用可扩展数字来表示主要,次要,微型等版本。 版本规范由以下形式语法描述:
- SpecificationVersion:
- Digits RefinedVersionopt
- RefinedVersion:
.
Digits.
Digits RefinedVersion- Digits:
- Digit
- Digits
- Digit:
- any character for which
Character.isDigit(char)
returnstrue
, e.g. 0, 1, 2, ...
实施标题,版本和供应商字符串标识一个实现,并且可以方便地提供,以便在发生问题时对所涉及的包进行准确的报告。 所有三个实现字符串的内容都是供应商特定的。 实现版本字符串没有指定的语法,应该仅与所需版本标识符相等才能进行比较。
在每个ClassLoader
实例中,来自同一个java包的所有类都具有相同的Package对象。 静态方法允许通过名称找到一个包,或者找到当前类加载器已知的所有包的集合。
Modifier and Type | Method and Description |
---|---|
<A extends Annotation> |
getAnnotation(类<A> annotationClass)
返回该元素的,如果这样的注释
,否则返回null指定类型的注释。
|
Annotation[] |
getAnnotations()
返回此元素上
存在的注释。
|
<A extends Annotation> |
getAnnotationsByType(类<A> annotationClass)
返回与此元素相关
联的注释 。
|
<A extends Annotation> |
getDeclaredAnnotation(类<A> annotationClass)
如果这样的注释
直接存在 ,则返回指定类型的元素注释,否则返回null。
|
Annotation[] |
getDeclaredAnnotations()
返回
直接存在于此元素上的注释。
|
<A extends Annotation> |
getDeclaredAnnotationsByType(类<A> annotationClass)
如果此类注释
直接存在或
间接存在,则返回该元素的注释(指定类型)。
|
String |
getImplementationTitle()
返回此包的标题。
|
String |
getImplementationVendor()
返回提供此实施的组织,供应商或公司的名称。
|
String |
getImplementationVersion()
返回这个实现的版本。
|
String |
getName()
返回此包的名称。
|
static 软件包 |
getPackage(String name)
在呼叫者
ClassLoader 实例中按名称查找包。
|
static 软件包[] |
getPackages()
获取目前为呼叫者的
ClassLoader 实例所知道的所有软件包。
|
String |
getSpecificationTitle()
返回此程序包实现的规范的标题。
|
String |
getSpecificationVendor()
返回拥有和维护实现此程序包的类的规范的组织,供应商或公司的名称。
|
String |
getSpecificationVersion()
返回此程序包实现的规范的版本号。
|
int |
hashCode()
返回从包名称计算的哈希码。
|
boolean |
isAnnotationPresent(类<? extends Annotation> annotationClass)
如果此元素上
存在指定类型的注释,则返回true,否则返回false。
|
boolean |
isCompatibleWith(String desired)
将该软件包的规格版本与所需版本进行比较。
|
boolean |
isSealed()
如果封装密封,则返回true。
|
boolean |
isSealed(URL url)
如果这个包是针对指定的代码源URL密封的,则返回true。
|
String |
toString()
返回此包的字符串表示形式。
|
public String getName()
java.lang
public String getSpecificationTitle()
public String getSpecificationVersion()
public String getSpecificationVendor()
public String getImplementationTitle()
public String getImplementationVersion()
public String getImplementationVendor()
public boolean isSealed()
public boolean isSealed(URL url)
url
- 代码源网址
public boolean isCompatibleWith(String desired) throws NumberFormatException
通过顺序比较期望和规格字符串的相应组件来比较版本号。 每个组件都被转换为十进制整数,并将值进行比较。 如果规格值大于所需值,则返回true。 如果返回值小于false。 如果值相等,则会跳过周期,并比较下一对组件。
desired
- 所需版本的版本字符串。
NumberFormatException
- 如果所需或当前版本不是正确的点缀形式。
public static 软件包 getPackage(String name)
ClassLoader
实例中按名称查找包。
调用者ClassLoader
实例用于查找与命名类相对应的包实例。
如果呼叫者ClassLoader
实例为空,则会搜索由系统ClassLoader
实例加载的包的集合以查找命名的包。
仅当类加载器使用适当的属性创建包实例时,包才具有版本和规范的属性。 通常,这些属性在伴随类的清单中定义。
name
- 一个包名,例如java.lang。
public static 软件包[] getPackages()
ClassLoader
实例知道的所有包。
这些包对应于通过或通过名称加载到该ClassLoader
实例的类。
如果调用者的ClassLoader
实例是引导ClassLoader
实例,这在一些实现中可以由null
表示,则仅返回与引导ClassLoader
实例加载的类对应的ClassLoader
。
ClassLoader
实例。
如果没有知道,则返回零长度数组。
public int hashCode()
hashCode
在类别
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
public <A extends Annotation> A getAnnotation(类<A> annotationClass)
AnnotatedElement
复制
getAnnotation
在界面
AnnotatedElement
A
- 要查询的注释类型,如果存在则返回
annotationClass
- 对应于注释类型的Class对象
NullPointerException
- 如果给定的注释类为空
public boolean isAnnotationPresent(类<? extends Annotation> annotationClass)
此方法返回的真值相当于: getAnnotation(annotationClass) != null
默认方法的主体被指定为上述代码。
isAnnotationPresent
在界面
AnnotatedElement
annotationClass
- 对应于注释类型的Class对象
NullPointerException
- 如果给定的注释类为空
public <A extends Annotation> A[] getAnnotationsByType(类<A> annotationClass)
AnnotatedElement
复制
AnnotatedElement.getAnnotation(Class)
之间的区别在于此方法检测其参数是否为可重复注释类型 (JLS 9.6),如果是,则尝试通过“查看”容器注释来查找该类型的一个或多个注释。
该方法的调用者可以自由修改返回的数组;
它将对返回给其他调用者的数组没有影响。
getAnnotationsByType
在界面
AnnotatedElement
A
- 查询的注释类型,如果存在则返回
annotationClass
- 对应于注释类型的Class对象
NullPointerException
- 如果给定的注释类为空
public Annotation[] getAnnotations()
AnnotatedElement
复制
getAnnotations
在界面
AnnotatedElement
public <A extends Annotation> A getDeclaredAnnotation(类<A> annotationClass)
AnnotatedElement
复制
getDeclaredAnnotation
在界面
AnnotatedElement
A
- 要查询的注释类型,如果直接出现则返回
annotationClass
- 对应于注释类型的Class对象
NullPointerException
- 如果给定的注释类为空
public <A extends Annotation> A[] getDeclaredAnnotationsByType(类<A> annotationClass)
AnnotatedElement
复制
AnnotatedElement.getDeclaredAnnotation(Class)
之间的区别在于该方法检测其参数是否是可重复注释类型 (JLS 9.6),以及如果是,尝试通过“查看”容器注释(如果存在)来查找该类型的一个或多个注释。
该方法的调用者可以自由修改返回的数组;
它将对返回给其他调用者的数组没有影响。
getDeclaredAnnotationsByType
在界面
AnnotatedElement
A
- 直接或间接出现的查询和返回的注释类型
annotationClass
- 对应于注释类型的Class对象
NullPointerException
- 如果给定的注释类为空
public Annotation[] getDeclaredAnnotations()
AnnotatedElement
复制
getDeclaredAnnotations
在界面
AnnotatedElement
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.