树叶云鸿蒙OS教程:鸿蒙OS Package

Package

java.lang.Object

|—java.lang.Package

public class Package
extends Object
implements AnnotatedElement

包对象包含有关 Java 包的实现和规范的版本信息。 此版本信息由加载类的 ClassLoader 实例检索并提供。 通常,它存储在与类一起分发的清单中。

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

规范版本号使用由句点“.”分隔的非负十进制整数组成的语法,例如“2.0”或“1.2.3.4.5.6.7”。 这允许使用可扩展的数字来表示主要、次要、微型等版本。 版本规范由以下形式语法描述:

规格版本:

Digits RefinedVersionopt

精炼版:

. Digits

. Digits RefinedVersion

Digits:

Digit

Digits

Digit:

Character#isDigit 返回 true 的任何字符,例如 0, 1, 2, …

实现标题、版本和供应商字符串标识了一个实现,并且可以方便地使用,以便在发生问题时准确报告所涉及的包。 所有三个实现字符串的内容都是特定于供应商的。 实现版本字符串没有指定的语法,只应与所需的版本标识符比较是否相等。

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

方法总结

修饰符和类型方法描述
<A extends Annotation>AgetAnnotation(Class<A> annotationClass)如果存在这样的注释,则返回此元素的指定类型的注释,否则返回 null。
Annotation[]getAnnotations()返回此元素上存在的注释。
<A extends Annotation>A[]getAnnotationsByType(Class<A> annotationClass)返回与此元素关联的注释。
<A extends Annotation>AgetDeclaredAnnotation(Class<A> annotationClass)如果直接存在这样的注释,则返回此元素的指定类型的注释,否则返回 null。
Annotation[]getDeclaredAnnotations()返回此元素上直接存在的注释。
<A extends Annotation>A[]getDeclaredAnnotationsByType(Class<A> annotationClass)如果此类注释直接存在或间接存在,则返回指定类型的此元素的注释。
StringgetImplementationTitle()返回此包的标题。
StringgetImplementationVendor()返回提供此实现的组织、供应商或公司的名称。
StringgetImplementationVersion()返回此实现的版本。
StringgetName()返回此包的名称。
static PackagegetPackage(String name)在调用者 ClassLoader 实例中按名称查找包。
static Package[]getPackages()获取调用者的 ClassLoader 实例当前已知的所有包。
StringgetSpecificationTitle()返回此包实现的规范的标题。
StringgetSpecificationVendor()返回拥有并维护实现此包的类规范的组织、供应商或公司的名称。
StringgetSpecificationVersion()返回此包实现的规范的版本号。
inthashCode()返回根据包名称计算的哈希码。
booleanisAnnotationPresent(Class<? extends Annotation> annotationClass)如果此元素上存在指定类型的注释,则返回 true,否则返回 false。
booleanisCompatibleWith(String desired)将此包的规格版本与所需版本进行比较。
booleanisSealed()如果此包已密封,则返回 true。
booleanisSealed(URL url)如果此包相对于指定的代码源 url 是密封的,则返回 true。
StringtoString()返回此包的字符串表示形式。
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait

方法详情

getName

public String getName()

返回此包的名称。

返回:

《The Java™ Language Specification》第 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()

如果此包已密封,则返回 true。

返回:

如果包裹是密封的,则为 true,否则为 false。

isSealed

public boolean isSealed(URL url)

如果此包相对于指定的代码源 url 是密封的,则返回 true。

参数:

参数名称参数描述
url代码源地址

返回:

如果此包相对于 url 是密封的,则为 true

isCompatibleWith

public boolean isCompatibleWith(String desired) throws NumberFormatException

将此包的规格版本与所需版本进行比较。 如果此包规范版本号大于或等于所需的版本号,则返回 true。

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

参数:

参数名称参数描述
desired所需版本的版本字符串。

返回:

如果此包的版本号大于或等于所需的版本号,则为 true

Throws:

Throw名称Throw描述
NumberFormatException如果所需或当前版本不是正确的虚线形式。

getPackage

public static Package getPackage(String name)

在调用者 ClassLoader 实例中按名称查找包。 调用者 ClassLoader 实例用于查找与命名类对应的包实例。 如果调用者 ClassLoader 实例为空,则搜索由系统 ClassLoader 实例加载的包集以查找命名包。

仅当类加载器创建具有适当属性的包实例时,包才具有版本和规范的属性。 通常,这些属性在伴随类的清单中定义。

参数:

参数名称参数描述
name包名,例如 java.lang。

返回:

请求名称的包。 如果存档或代码库中没有可用的包信息,则它可能为 null。

getPackages

public static Package[] getPackages()

获取调用者的 ClassLoader 实例当前已知的所有包。 这些包对应于通过该 ClassLoader 实例加载或按名称可访问的类。 如果调用者的ClassLoader实例是bootstrap ClassLoader实例,在某些实现中可能用null表示,则只会返回bootstrap ClassLoader实例加载的类对应的包。

返回:

调用者 ClassLoader 实例已知的新包数组。 如果不知道,则返回零长度数组。

hashCode

public int hashCode()

返回根据包名称计算的哈希码。

覆盖:

类 Object 中的 hashCode

返回:

从包名称计算的哈希码。

toString

public String toString()

返回此包的字符串表示形式。 它的值是字符串“package”和包名。 如果定义了包标题,则会附加它。 如果定义了包版本,则附加它。

覆盖:

类 Object 中的 toString

返回:

包的字符串表示形式。

getAnnotation

public <A extends Annotation> A getAnnotation(Class<A> annotationClass)

从接口复制的描述:AnnotatedElement

如果存在这样的注释,则返回此元素的指定类型的注释,否则返回 null。

指定者:

接口 AnnotatedElement 中的 getAnnotation

类型参数:

类型参数名称类型参数描述
A要查询并返回的注释类型(如果存在)

参数:

参数名称参数描述
annotationClass注解类型对应的Class对象

返回:

此元素的指定注释类型的注释(如果存在于此元素上),否则为 null

Throws:

Throw名称Throw描述
NullPointerException如果给定的注释类为空

isAnnotationPresent

public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)

如果此元素上存在指定类型的注释,则返回 true,否则返回 false。 此方法主要是为了方便访问标记注释而设计的。

该方法返回的真值等价于:getAnnotation(annotationClass) != null

默认方法的主体被指定为上面的代码。

指定者:

接口 AnnotatedElement 中的 isAnnotationPresent

参数:

参数名称参数描述
annotationClass注解类型对应的Class对象

返回:

如果此元素上存在指定注释类型的注释,则为 true,否则为 false

Throws:

Throw名称Throw描述
NullPointerExceptionif the given annotation class is null

getAnnotationsByType

public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)

从接口复制的描述:AnnotatedElement

返回与此元素关联的注释。 如果没有与该元素关联的注解,则返回值为长度为 0 的数组。该方法与 AnnotatedElement.getAnnotation(java.lang.Class) 的区别在于该方法检测其参数是否为可重复的注解类型( JLS 9.6),如果是这样,则尝试通过“查看”容器注释来查找该类型的一个或多个注释。 该方法的调用者可以随意修改返回的数组; 它不会影响返回给其他调用者的数组。

指定者:

接口 AnnotatedElement 中的 getAnnotationsByType

类型参数:

类型参数名称类型参数描述
A要查询并返回的注释类型(如果存在)

参数:

参数名称参数描述
annotationClass注解类型对应的Class对象

返回:

如果与此元素相关联,则指定注释类型的所有此元素的注释,否则为长度为零的数组

Throws:

Throw名称Throw描述
NullPointerException如果给定的注释类为空

getAnnotations

public Annotation[] getAnnotations()

从接口复制的描述:AnnotatedElement

返回此元素上存在的注释。 如果此元素上没有注释,则返回值为长度为 0 的数组。此方法的调用者可以自由修改返回的数组; 它不会影响返回给其他调用者的数组。

指定者:

接口 AnnotatedElement 中的 getAnnotations

返回:

此元素上存在的注释

getDeclaredAnnotation

public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)

从接口复制的描述:AnnotatedElement

如果直接存在这样的注释,则返回此元素的指定类型的注释,否则返回 null。 此方法忽略继承的注释。 (如果此元素上没有直接存在注释,则返回 null。)

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotation

类型参数:

类型参数名称类型参数描述
A要查询并返回的注释类型(如果直接存在)

参数:

参数名称参数描述
annotationClass注解类型对应的Class对象

返回:

如果直接存在于此元素上,则此元素的指定注释类型的注释,否则为 null

Throws:

Throw名称Throw描述
NullPointerException如果给定的注释类为空

getDeclaredAnnotationsByType

public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)

从接口复制的描述:AnnotatedElement

如果此类注释直接存在或间接存在,则返回指定类型的此元素的注释。 此方法忽略继承的注释。 如果此元素上没有直接或间接存在指定的注解,则返回值为长度为 0 的数组。此方法与 AnnotatedElement.getDeclaredAnnotation(java.lang.Class) 的区别在于该方法检测其参数是否为 可重复的注释类型(JLS 9.6),如果是这样,则尝试通过“查看”容器注释来查找该类型的一个或多个注释(如果存在)。 该方法的调用者可以随意修改返回的数组; 它不会影响返回给其他调用者的数组。

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotationsByType

类型参数:

类型参数名称类型参数描述
A如果直接或间接存在,则要查询和返回的注释类型

参数:

参数名称参数描述
annotationClass注解类型对应的Class对象

返回:

如果直接或间接存在于此元素上,则指定注释类型的所有此元素的注释,否则长度为零的数组

Throws:

Throw名称Throw描述
NullPointerException如果给定的注释类为空

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()

从接口复制的描述:AnnotatedElement

返回此元素上直接存在的注释。 此方法忽略继承的注释。 如果此元素上没有直接存在注释,则返回值为长度为 0 的数组。此方法的调用者可以自由修改返回的数组; 它不会影响返回给其他调用者的数组。

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotations

返回:

直接出现在此元素上的注释

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/180583.html<

(0)
管理的头像管理
上一篇2025-03-27 02:28
下一篇 2025-03-27 02:29

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注