JavaTM 2 Platform
Standard Ed. 6

java.lang
類別 Package

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

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only