- すべての実装されたインタフェース:
AnnotatedElement
実行時パッケージの注釈は、ランタイム・パッケージのクラスと同じコード・ソースのpackage-info.class
から読み込まれます。
実行時パッケージを構成するクラスのセットは、特定の仕様を実装することができます。 Package
が定義されている場合、仕様タイトル、バージョン、およびベンダー(仕様の所有者/保守者を示す)を提供できます。 アプリケーションは、Package
がPackage.isCompatibleWith(String)
メソッドを使用して特定の仕様バージョンと互換性があるかどうかを尋ねることができます。 また、Package
の定義時に、ランタイム・パッケージを構成する実際のクラスに関する情報を提供できます。 この情報は、実装のタイトル、バージョン、およびベンダーの(クラスの供給者を示す)で構成されています。
Package
は、ClassLoader.definePackage(String, String, String, String, String, String, String, URL)
メソッドで明示的に定義することができます。 呼び出し元は、仕様と実装のタイトル、バージョン、およびベンダーを提供します。 呼び出し元は、パッケージがsealedかどうかを示します。 ランタイム・パッケージのクラスが定義されているときにランタイム・パッケージに対してPackage
が明示的に定義されていない場合、Package
はクラス・ローダーを定義するクラスによって次のように自動的に定義されます。
名前付きモジュールのクラスに対して自動的に定義されたPackage
には、次のプロパティがあります:
- パッケージの名前はクラスの「バイナリ名」から得られます。 名前付きモジュールのクラスは名前付きパッケージになければならないため、派生名は決して空ではありません。
- パッケージは、既知の場合はコード・ソースとして「モジュールのロケーション」で封印されます。
- 仕様と実装のタイトル、バージョン、ベンダーは不明です。
- パッケージの注釈は、上記で指定された
package-info.class
から読み込まれます。
名前のないモジュールのクラスに対して自動的に定義されたPackage
には、次のプロパティがあります:
- パッケージの名前は、
""
(名前のないパッケージのクラスの場合)または(名前付きパッケージのクラス用)クラスの「バイナリ名」から派生したものです。 - パッケージはシールされていません。
- 仕様と実装のタイトル、バージョン、ベンダーは不明です。
- パッケージの注釈は、上記で指定された
package-info.class
から読み込まれます。
Package
はPackage.getPackage(String)
とClassLoader.getDefinedPackage(String)
メソッドで取得できます。 クラス・ローダーによって定義されたすべてのPackage
は、Package.getPackages()
およびClassLoader.getDefinedPackages()
メソッドを使用して取得できます。
- 実装上のノート:
- 「組み込みクラス・ローダー」は、「名前付きモジュール」内のパッケージの
Package
オブジェクトを明示的に定義しません。 代わりに、それらのパッケージは自動的に定義され、仕様と実装のバージョニング情報はありません。 - Java Virtual Machine仕様を参照してください:
-
5.3 作成およびロード
- 導入されたバージョン:
- 1.2
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明<A extends Annotation>
AgetAnnotation
(Class<A> annotationClass) 存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。この要素に存在する注釈を返します。<A extends Annotation>
A[]getAnnotationsByType
(Class<A> annotationClass) この要素に関連付けられている注釈を返します。<A extends Annotation>
AgetDeclaredAnnotation
(Class<A> annotationClass) 直接存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。この要素に直接存在する注釈を返します。<A extends Annotation>
A[]getDeclaredAnnotationsByType
(Class<A> annotationClass) 直接存在するか間接的に存在する場合は、この要素の指定された型の注釈を返します。このパッケージのタイトルを返します。このパッケージを実装したベンダーを返します。不明な場合はnull
が返されます。この実装のバージョンを返します。getName()
このパッケージの名前を返します。static Package
getPackage
(String name) 非推奨。static Package[]
呼び出し側クラス・ローダーとその祖先によって定義されたPackage
をすべて返します。このパッケージが実装する仕様のタイトルを返します。このパッケージを実装するクラスの仕様を所有して保持する組織、ベンダー、または会社の名前を返します。このパッケージが実装する仕様のバージョン番号を返します。int
hashCode()
パッケージ名から計算されたハッシュ・コードを返します。boolean
isAnnotationPresent
(Class<? extends Annotation> annotationClass) 指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。boolean
isCompatibleWith
(String desired) このパッケージの仕様のバージョンを目的のバージョンと比較します。boolean
isSealed()
このパッケージがシールされる場合は、trueを返します。boolean
指定されたコード・ソースurl
に対してこのパッケージが封印されている場合はtrueを返します。toString()
このPackageの文字列表現を返します。
-
メソッドの詳細
-
getName
public String getName()このパッケージの名前を返します。- 戻り値:
- 「Java言語仕様」のセクション6.5.3で定義されているこのパッケージの完全修飾名(例:
java.lang
)
-
getSpecificationTitle
public String getSpecificationTitle()このパッケージが実装する仕様のタイトルを返します。- 戻り値:
- 指定されていない場合は、仕様タイトル、
null
が返されます。
-
getSpecificationVersion
public String getSpecificationVersion()このパッケージが実装する仕様のバージョン番号を返します。 このバージョン文字列は、"."で区切られた非負の10進整数のシーケンスでなければならず、先頭にゼロが付いている可能性があります。 バージョン文字列が比較されると、最上位番号が比較されます。仕様のバージョン番号は、"2.0"や"1.2.3.4.5.6.7"のように、ピリオド"."で区切られた非負の10進整数で構成される構文を使用します。 この形式によって、メジャー、マイナー、マイクロなどのバージョンを表現するように、番号を拡張することができます。 仕様のバージョン番号は、次の正規文法によって記述されます。
- SpecificationVersion:
- Digits RefinedVersionopt
- RefinedVersion:
.
Digits.
Digits RefinedVersion- Digits:
- 数字
- Digits
- Digit:
Character.isDigit(char)
がtrue
を返す任意の文字(0、1、2など)
- 戻り値:
- 指定されていない場合は、
null
が返されます。
-
getSpecificationVendor
public String getSpecificationVendor()このパッケージを実装するクラスの仕様を所有して保持する組織、ベンダー、または会社の名前を返します。- 戻り値:
- 仕様ベンダー
null
が不明の場合はそれが返されます。
-
getImplementationTitle
public String getImplementationTitle()このパッケージのタイトルを返します。- 戻り値:
- 実装のタイトル、
null
が不明の場合はそれが返されます。
-
getImplementationVersion
public String getImplementationVersion()この実装のバージョンを返します。 この実装のベンダーによって割り当てられた文字列からなり、Java実行時には特定の構文は指定または予期されません。 これは、このパッケージのベンダーによる実装で使用されるその他のパッケージ・バージョン文字列と等価かどうが比較されることがあります。- 戻り値:
- 実装のバージョン、
null
が不明の場合はそれが返されます。
-
getImplementationVendor
public String getImplementationVendor()このパッケージを実装したベンダーを返します。不明な場合はnull
が返されます。- 戻り値:
- このパッケージを実装したベンダー
null
が不明の場合はそれが返されます。
-
isSealed
public boolean isSealed()このパッケージがシールされる場合は、trueを返します。- APIのノート:
- 「パッケージのシール」は、「シール済クラスまたはインタフェース」とは関係がありません。 パッケージ・シールは、名前のないモジュールのクラスに定義されたJARファイルに固有です。
Package
をシール済パッケージとして定義する方法の詳細は、Package
クラス仕様を参照してください。 - 戻り値:
- パッケージがシールされる場合はtrue、そうでない場合はfalse。
-
isSealed
public boolean isSealed(URL url) 指定されたコード・ソースurl
に対してこのパッケージが封印されている場合はtrueを返します。- APIのノート:
- 「パッケージのシール」は、「シール済クラスまたはインタフェース」とは関係がありません。 パッケージ・シールは、名前のないモジュールのクラスに定義されたJARファイルに固有です。
Package
をシール済パッケージとして定義する方法の詳細は、Package
クラス仕様を参照してください。 - パラメータ:
url
- コード・ソースURL- 戻り値:
- 指定された
url
に関してこのパッケージが封印されている場合はtrue
-
isCompatibleWith
public boolean isCompatibleWith(String desired) throws NumberFormatException このパッケージの仕様のバージョンを目的のバージョンと比較します。 このパッケージの仕様のバージョン番号が目的のバージョン番号以上の場合は、trueが返されます。バージョン番号は、目的の文字列と仕様の文字列の対応するコンポーネントを順番に比較することによって比較されます。 各コンポーネントは10進整数として変換され、値として比較されます。 仕様の値が目的の値より大きい場合、trueが返されます。 値が目的の値より小さい場合、falseが返されます。 値が等しい場合、ピリオドはスキップされ、次のコンポーネントのペアが比較されます。
- パラメータ:
desired
- 目的のバージョンのバージョン文字列。- 戻り値:
- このパッケージのバージョン番号が目的のバージョン番号以上の場合はtrue
- 例外:
NumberFormatException
- 現在のバージョンが既知でないか、目的のバージョンまたは現在のバージョンが正しいドット形式でない場合。
-
getPackage
@Deprecated(since="9") public static Package getPackage(String name) 非推奨。複数のクラス・ローダーが互いに委譲して同じパッケージ名を持つクラスを定義し、そのようなローダーの1つがgetPackage
のルックアップ動作に依存して親ローダーからPackage
を返す場合、Package
によって公開されるプロパティは残りのプログラムで期待どおりにならない場合があります。 たとえば、Package
は、子ローダーによって定義されたpackage-info.class
ファイルに注釈が存在する場合でも、親ローダーによって定義されたpackage-info.class
ファイルの注釈のみを公開します。 より堅牢なアプローチは、指定されたクラス・ローダーのPackage
を返すClassLoader.getDefinedPackage(java.lang.String)
メソッドを使用することです。呼び出し側クラス・ローダーとその祖先で名前でパッケージを検索します。呼び出し元のクラス・ローダーが指定された名前の
Package
を定義すると、Package
が返されます。 それ以外の場合、呼び出し元クラス・ローダーの祖先は、指定された名前のPackage
に対して再帰的に(親による親)で検索されます。このメソッドを呼び出すことは、呼び出し側クラス・ローダーである
ClassLoader
インスタンスでClassLoader.getPackage(java.lang.String)
を呼び出すことと同じです。- パラメータ:
name
- パッケージ名("java.lang
"など)。- 戻り値:
- 呼び出し側クラス・ローダーまたはその祖先によって定義された指定された名前の
Package
、または見つからない場合はnull
。 - 例外:
NullPointerException
-name
がnull
の場合。- 関連項目:
-
getPackages
public static Package[] getPackages()呼び出し側クラス・ローダーとその祖先によって定義されたPackage
をすべて返します。 返される配列には、同じパッケージ名の複数のPackage
オブジェクトが含まれ、それぞれがクラス・ローダー階層の異なるクラス・ローダーによって定義されます。このメソッドを呼び出すことは、呼び出し側クラス・ローダーである
ClassLoader
インスタンスでClassLoader.getPackages()
を呼び出すことと同じです。- 戻り値:
- このクラス・ローダーとその祖先によって定義された
Package
オブジェクトの配列 - 関連項目:
-
hashCode
public int hashCode()パッケージ名から計算されたハッシュ・コードを返します。 -
toString
public String toString()このPackageの文字列表現を返します。 この値は、文字列「package」とパッケージ名です。 パッケージのタイトルが定義されている場合、それが付加されます。 パッケージのバージョンが定義されている場合、それが付加されます。 -
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass) 存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getAnnotation
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- 存在する場合は、この要素の指定された注釈型の注釈。そうでない場合はnull
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.5
-
isAnnotationPresent
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) 指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。 このメソッドは、主にマーカー注釈への簡易アクセスを目的に設計されています。このメソッドによって返されるtrue値は、
getAnnotation(annotationClass) != null
と同等です。- 定義:
isAnnotationPresent
、インタフェースAnnotatedElement
- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- 指定された注釈型の注釈がこの要素に存在する場合はtrue、そうでない場合はfalse
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.5
-
getAnnotationsByType
public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass) この要素に関連付けられている注釈を返します。 この要素に関連付けられている注釈がない場合、戻り値は長さ0の配列です。 このメソッドとAnnotatedElement.getAnnotation(Class)
の違いは、引数が「繰返し可能な注釈タイプ」 (JLS 9.6)であるかどうかをこのメソッドが検出し、その場合、"検索"がコンテナ注釈を使用してそのタイプの注釈を検索しようとすることです。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getAnnotationsByType
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- この要素に関連付けられている場合は、この要素の指定された注釈型のすべての注釈。そうでない場合は長さ0の配列
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.8
-
getAnnotations
public Annotation[] getAnnotations()この要素に存在する注釈を返します。 この要素に存在する注釈がない場合、戻り値は長さ0の配列です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getAnnotations
、インタフェースAnnotatedElement
- 戻り値:
- この要素に存在する注釈
- 導入されたバージョン:
- 1.5
-
getDeclaredAnnotation
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass) 直接存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。 このメソッドは継承された注釈を無視します。 (この要素に直接存在する注釈がない場合は、nullを返します。)このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getDeclaredAnnotation
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、直接存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- 直接存在する場合は、この要素の指定された注釈型の注釈。そうでない場合はnull
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.8
-
getDeclaredAnnotationsByType
public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass) インタフェースからコピーされた説明:AnnotatedElement
直接存在するか間接的に存在する場合は、この要素の指定された型の注釈を返します。 このメソッドは継承された注釈を無視します。 この要素に直接または間接的に存在する指定された注釈がない場合、戻り値は長さ0の配列です。 このメソッドとAnnotatedElement.getDeclaredAnnotation(Class)
の違いは、引数が「繰返し可能な注釈タイプ」 (JLS 9.6)であるかどうかをこのメソッドが検出し、ある場合は"検索"がコンテナ注釈(存在する場合)を検出しようとする点です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。- 定義:
getDeclaredAnnotationsByType
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、直接または間接的に存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- この要素に直接または間接的に存在する場合は、この要素の指定された注釈型のすべての注釈。そうでない場合は長さ0の配列
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.8
-
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()この要素に直接存在する注釈を返します。 このメソッドは継承された注釈を無視します。 この要素に直接存在する注釈がない場合、戻り値は長さ0の配列です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getDeclaredAnnotations
、インタフェースAnnotatedElement
- 戻り値:
- この要素に直接存在する注釈
- 導入されたバージョン:
- 1.5
-
getPackage
のルックアップ動作に依存して親ローダーからPackage
を返す場合、Package
によって公開されるプロパティは残りのプログラムで期待どおりにならない場合があります。