鴻蒙OS Package

2022-05-18 16:18 更新

Package

java.lang.Object

|---java.lang.Package

public class Package
extends Object
implements AnnotatedElement

包對(duì)象包含有關(guān) Java 包的實(shí)現(xiàn)和規(guī)范的版本信息。 此版本信息由加載類(lèi)的 ClassLoader 實(shí)例檢索并提供。 通常,它存儲(chǔ)在與類(lèi)一起分發(fā)的清單中。

組成包的類(lèi)集可以實(shí)現(xiàn)特定的規(guī)范,如果是這樣,規(guī)范標(biāo)題、版本號(hào)和供應(yīng)商字符串標(biāo)識(shí)該規(guī)范。 應(yīng)用程序可以詢(xún)問(wèn)包是否與特定版本兼容,有關(guān)詳細(xì)信息,請(qǐng)參閱 isCompatibleWith 方法。

規(guī)范版本號(hào)使用由句點(diǎn)“.”分隔的非負(fù)十進(jìn)制整數(shù)組成的語(yǔ)法,例如“2.0”或“1.2.3.4.5.6.7”。 這允許使用可擴(kuò)展的數(shù)字來(lái)表示主要、次要、微型等版本。 版本規(guī)范由以下形式語(yǔ)法描述:

規(guī)格版本:

Digits RefinedVersionopt

精煉版:

. Digits

. Digits RefinedVersion

Digits:

Digit

Digits

Digit:

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

實(shí)現(xiàn)標(biāo)題、版本和供應(yīng)商字符串標(biāo)識(shí)了一個(gè)實(shí)現(xiàn),并且可以方便地使用,以便在發(fā)生問(wèn)題時(shí)準(zhǔn)確報(bào)告所涉及的包。 所有三個(gè)實(shí)現(xiàn)字符串的內(nèi)容都是特定于供應(yīng)商的。 實(shí)現(xiàn)版本字符串沒(méi)有指定的語(yǔ)法,只應(yīng)與所需的版本標(biāo)識(shí)符比較是否相等。

在每個(gè) ClassLoader 實(shí)例中,來(lái)自同一個(gè) java 包的所有類(lèi)都具有相同的 Package 對(duì)象。 靜態(tài)方法允許通過(guò)名稱(chēng)或當(dāng)前類(lèi)加載器已知的所有包的集合找到包。

方法總結(jié)

修飾符和類(lèi)型 方法 描述
<A extends Annotation>A getAnnotation(Class<A> annotationClass) 如果存在這樣的注釋?zhuān)瑒t返回此元素的指定類(lèi)型的注釋?zhuān)駝t返回 null。
Annotation[] getAnnotations() 返回此元素上存在的注釋。
<A extends Annotation>A[] getAnnotationsByType(Class<A> annotationClass) 返回與此元素關(guān)聯(lián)的注釋。
<A extends Annotation>A getDeclaredAnnotation(Class<A> annotationClass) 如果直接存在這樣的注釋?zhuān)瑒t返回此元素的指定類(lèi)型的注釋?zhuān)駝t返回 null。
Annotation[] getDeclaredAnnotations() 返回此元素上直接存在的注釋。
<A extends Annotation>A[] getDeclaredAnnotationsByType(Class<A> annotationClass) 如果此類(lèi)注釋直接存在或間接存在,則返回指定類(lèi)型的此元素的注釋。
String getImplementationTitle() 返回此包的標(biāo)題。
String getImplementationVendor() 返回提供此實(shí)現(xiàn)的組織、供應(yīng)商或公司的名稱(chēng)。
String getImplementationVersion() 返回此實(shí)現(xiàn)的版本。
String getName() 返回此包的名稱(chēng)。
static Package getPackage(String name) 在調(diào)用者 ClassLoader 實(shí)例中按名稱(chēng)查找包。
static Package[] getPackages() 獲取調(diào)用者的 ClassLoader 實(shí)例當(dāng)前已知的所有包。
String getSpecificationTitle() 返回此包實(shí)現(xiàn)的規(guī)范的標(biāo)題。
String getSpecificationVendor() 返回?fù)碛胁⒕S護(hù)實(shí)現(xiàn)此包的類(lèi)規(guī)范的組織、供應(yīng)商或公司的名稱(chēng)。
String getSpecificationVersion() 返回此包實(shí)現(xiàn)的規(guī)范的版本號(hào)。
int hashCode() 返回根據(jù)包名稱(chēng)計(jì)算的哈希碼。
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) 如果此元素上存在指定類(lèi)型的注釋?zhuān)瑒t返回 true,否則返回 false。
boolean isCompatibleWith(String desired) 將此包的規(guī)格版本與所需版本進(jìn)行比較。
boolean isSealed() 如果此包已密封,則返回 true。
boolean isSealed(URL url) 如果此包相對(duì)于指定的代碼源 url 是密封的,則返回 true。
String toString() 返回此包的字符串表示形式。
從類(lèi) java.lang.Object 繼承的方法
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait

方法詳情

getName

public String getName()

返回此包的名稱(chēng)。

返回:

《The Java? Language Specification》第 6.5.3 節(jié)中定義的該包的完全限定名稱(chēng),例如 java.lang

getSpecificationTitle

public String getSpecificationTitle()

返回此包實(shí)現(xiàn)的規(guī)范的標(biāo)題。

返回:

規(guī)范標(biāo)題,如果不知道則返回null。

getSpecificationVersion

public String getSpecificationVersion()

返回此包實(shí)現(xiàn)的規(guī)范的版本號(hào)。 此版本字符串必須是由“.”分隔的非負(fù)十進(jìn)制整數(shù)序列,并且可能有前導(dǎo)零。 當(dāng)比較版本字符串時(shí),比較最重要的數(shù)字。

返回:

規(guī)范版本,如果不知道則返回null。

getSpecificationVendor

public String getSpecificationVendor()

返回?fù)碛胁⒕S護(hù)實(shí)現(xiàn)此包的類(lèi)規(guī)范的組織、供應(yīng)商或公司的名稱(chēng)。

返回:

規(guī)范供應(yīng)商,如果未知?jiǎng)t返回 null。

getImplementationTitle

public String getImplementationTitle()

返回此包的標(biāo)題。

返回:

實(shí)現(xiàn)的標(biāo)題,如果不知道則返回null。

getImplementationVersion

public String getImplementationVersion()

返回此實(shí)現(xiàn)的版本。 它由此實(shí)現(xiàn)的供應(yīng)商分配的任何字符串組成,并且沒(méi)有 Java 運(yùn)行時(shí)指定或期望的任何特定語(yǔ)法。 它可以與此供應(yīng)商為此包用于此實(shí)現(xiàn)的其他包版本字符串進(jìn)行比較是否相等。

返回:

實(shí)現(xiàn)的版本,如果不知道則返回null。

getImplementationVendor

public String getImplementationVendor()

返回提供此實(shí)現(xiàn)的組織、供應(yīng)商或公司的名稱(chēng)。

返回:

實(shí)施此軟件包的供應(yīng)商。

isSealed

public boolean isSealed()

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

返回:

如果包裹是密封的,則為 true,否則為 false。

isSealed

public boolean isSealed(URL url)

如果此包相對(duì)于指定的代碼源 url 是密封的,則返回 true。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
url 代碼源地址

返回:

如果此包相對(duì)于 url 是密封的,則為 true

isCompatibleWith

public boolean isCompatibleWith(String desired) throws NumberFormatException

將此包的規(guī)格版本與所需版本進(jìn)行比較。 如果此包規(guī)范版本號(hào)大于或等于所需的版本號(hào),則返回 true。

通過(guò)順序比較期望字符串和規(guī)范字符串的相應(yīng)組件來(lái)比較版本號(hào)。 每個(gè)組件都轉(zhuǎn)換為十進(jìn)制整數(shù)并比較值。 如果規(guī)范值大于期望值,則返回 true。 如果值小于 false 則返回。 如果值相等,則跳過(guò)周期并比較下一對(duì)分量。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
desired 所需版本的版本字符串。

返回:

如果此包的版本號(hào)大于或等于所需的版本號(hào),則為 true

Throws:

Throw名稱(chēng) Throw描述
NumberFormatException 如果所需或當(dāng)前版本不是正確的虛線(xiàn)形式。

getPackage

public static Package getPackage(String name)

在調(diào)用者 ClassLoader 實(shí)例中按名稱(chēng)查找包。 調(diào)用者 ClassLoader 實(shí)例用于查找與命名類(lèi)對(duì)應(yīng)的包實(shí)例。 如果調(diào)用者 ClassLoader 實(shí)例為空,則搜索由系統(tǒng) ClassLoader 實(shí)例加載的包集以查找命名包。

僅當(dāng)類(lèi)加載器創(chuàng)建具有適當(dāng)屬性的包實(shí)例時(shí),包才具有版本和規(guī)范的屬性。 通常,這些屬性在伴隨類(lèi)的清單中定義。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
name 包名,例如 java.lang。

返回:

請(qǐng)求名稱(chēng)的包。 如果存檔或代碼庫(kù)中沒(méi)有可用的包信息,則它可能為 null。

getPackages

public static Package[] getPackages()

獲取調(diào)用者的 ClassLoader 實(shí)例當(dāng)前已知的所有包。 這些包對(duì)應(yīng)于通過(guò)該 ClassLoader 實(shí)例加載或按名稱(chēng)可訪(fǎng)問(wèn)的類(lèi)。 如果調(diào)用者的ClassLoader實(shí)例是bootstrap ClassLoader實(shí)例,在某些實(shí)現(xiàn)中可能用null表示,則只會(huì)返回bootstrap ClassLoader實(shí)例加載的類(lèi)對(duì)應(yīng)的包。

返回:

調(diào)用者 ClassLoader 實(shí)例已知的新包數(shù)組。 如果不知道,則返回零長(zhǎng)度數(shù)組。

hashCode

public int hashCode()

返回根據(jù)包名稱(chēng)計(jì)算的哈希碼。

覆蓋:

類(lèi) Object 中的 hashCode

返回:

從包名稱(chēng)計(jì)算的哈希碼。

toString

public String toString()

返回此包的字符串表示形式。 它的值是字符串“package”和包名。 如果定義了包標(biāo)題,則會(huì)附加它。 如果定義了包版本,則附加它。

覆蓋:

類(lèi) Object 中的 toString

返回:

包的字符串表示形式。

getAnnotation

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

從接口復(fù)制的描述:AnnotatedElement

如果存在這樣的注釋?zhuān)瑒t返回此元素的指定類(lèi)型的注釋?zhuān)駝t返回 null。

指定者:

接口 AnnotatedElement 中的 getAnnotation

類(lèi)型參數(shù):

類(lèi)型參數(shù)名稱(chēng) 類(lèi)型參數(shù)描述
A 要查詢(xún)并返回的注釋類(lèi)型(如果存在)

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
annotationClass 注解類(lèi)型對(duì)應(yīng)的Class對(duì)象

返回:

此元素的指定注釋類(lèi)型的注釋?zhuān)ㄈ绻嬖谟诖嗽厣希?,否則為 null

Throws:

Throw名稱(chēng) Throw描述
NullPointerException 如果給定的注釋類(lèi)為空

isAnnotationPresent

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

如果此元素上存在指定類(lèi)型的注釋?zhuān)瑒t返回 true,否則返回 false。 此方法主要是為了方便訪(fǎng)問(wèn)標(biāo)記注釋而設(shè)計(jì)的。

該方法返回的真值等價(jià)于:getAnnotation(annotationClass) != null

默認(rèn)方法的主體被指定為上面的代碼。

指定者:

接口 AnnotatedElement 中的 isAnnotationPresent

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
annotationClass 注解類(lèi)型對(duì)應(yīng)的Class對(duì)象

返回:

如果此元素上存在指定注釋類(lèi)型的注釋?zhuān)瑒t為 true,否則為 false

Throws:

Throw名稱(chēng) Throw描述
NullPointerException if the given annotation class is null

getAnnotationsByType

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

從接口復(fù)制的描述:AnnotatedElement

返回與此元素關(guān)聯(lián)的注釋。 如果沒(méi)有與該元素關(guān)聯(lián)的注解,則返回值為長(zhǎng)度為 0 的數(shù)組。該方法與 AnnotatedElement.getAnnotation(java.lang.Class) 的區(qū)別在于該方法檢測(cè)其參數(shù)是否為可重復(fù)的注解類(lèi)型( JLS 9.6),如果是這樣,則嘗試通過(guò)“查看”容器注釋來(lái)查找該類(lèi)型的一個(gè)或多個(gè)注釋。 該方法的調(diào)用者可以隨意修改返回的數(shù)組; 它不會(huì)影響返回給其他調(diào)用者的數(shù)組。

指定者:

接口 AnnotatedElement 中的 getAnnotationsByType

類(lèi)型參數(shù):

類(lèi)型參數(shù)名稱(chēng) 類(lèi)型參數(shù)描述
A 要查詢(xún)并返回的注釋類(lèi)型(如果存在)

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
annotationClass 注解類(lèi)型對(duì)應(yīng)的Class對(duì)象

返回:

如果與此元素相關(guān)聯(lián),則指定注釋類(lèi)型的所有此元素的注釋?zhuān)駝t為長(zhǎng)度為零的數(shù)組

Throws:

Throw名稱(chēng) Throw描述
NullPointerException 如果給定的注釋類(lèi)為空

getAnnotations

public Annotation[] getAnnotations()

從接口復(fù)制的描述:AnnotatedElement

返回此元素上存在的注釋。 如果此元素上沒(méi)有注釋?zhuān)瑒t返回值為長(zhǎng)度為 0 的數(shù)組。此方法的調(diào)用者可以自由修改返回的數(shù)組; 它不會(huì)影響返回給其他調(diào)用者的數(shù)組。

指定者:

接口 AnnotatedElement 中的 getAnnotations

返回:

此元素上存在的注釋

getDeclaredAnnotation

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

從接口復(fù)制的描述:AnnotatedElement

如果直接存在這樣的注釋?zhuān)瑒t返回此元素的指定類(lèi)型的注釋?zhuān)駝t返回 null。 此方法忽略繼承的注釋。 (如果此元素上沒(méi)有直接存在注釋?zhuān)瑒t返回 null。)

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotation

類(lèi)型參數(shù):

類(lèi)型參數(shù)名稱(chēng) 類(lèi)型參數(shù)描述
A 要查詢(xún)并返回的注釋類(lèi)型(如果直接存在)

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
annotationClass 注解類(lèi)型對(duì)應(yīng)的Class對(duì)象

返回:

如果直接存在于此元素上,則此元素的指定注釋類(lèi)型的注釋?zhuān)駝t為 null

Throws:

Throw名稱(chēng) Throw描述
NullPointerException 如果給定的注釋類(lèi)為空

getDeclaredAnnotationsByType

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

從接口復(fù)制的描述:AnnotatedElement

如果此類(lèi)注釋直接存在或間接存在,則返回指定類(lèi)型的此元素的注釋。 此方法忽略繼承的注釋。 如果此元素上沒(méi)有直接或間接存在指定的注解,則返回值為長(zhǎng)度為 0 的數(shù)組。此方法與 AnnotatedElement.getDeclaredAnnotation(java.lang.Class) 的區(qū)別在于該方法檢測(cè)其參數(shù)是否為 可重復(fù)的注釋類(lèi)型(JLS 9.6),如果是這樣,則嘗試通過(guò)“查看”容器注釋來(lái)查找該類(lèi)型的一個(gè)或多個(gè)注釋?zhuān)ㄈ绻嬖冢?該方法的調(diào)用者可以隨意修改返回的數(shù)組; 它不會(huì)影響返回給其他調(diào)用者的數(shù)組。

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotationsByType

類(lèi)型參數(shù):

類(lèi)型參數(shù)名稱(chēng) 類(lèi)型參數(shù)描述
A 如果直接或間接存在,則要查詢(xún)和返回的注釋類(lèi)型

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
annotationClass 注解類(lèi)型對(duì)應(yīng)的Class對(duì)象

返回:

如果直接或間接存在于此元素上,則指定注釋類(lèi)型的所有此元素的注釋?zhuān)駝t長(zhǎng)度為零的數(shù)組

Throws:

Throw名稱(chēng) Throw描述
NullPointerException 如果給定的注釋類(lèi)為空

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()

從接口復(fù)制的描述:AnnotatedElement

返回此元素上直接存在的注釋。 此方法忽略繼承的注釋。 如果此元素上沒(méi)有直接存在注釋?zhuān)瑒t返回值為長(zhǎng)度為 0 的數(shù)組。此方法的調(diào)用者可以自由修改返回的數(shù)組; 它不會(huì)影響返回給其他調(diào)用者的數(shù)組。

指定者:

接口 AnnotatedElement 中的 getDeclaredAnnotations

返回:

直接出現(xiàn)在此元素上的注釋

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)