モジュール java.base
パッケージ java.lang

クラスPackage

java.lang.Object
java.lang.Package
すべての実装されたインタフェース:
AnnotatedElement

public class Package extends Object implements AnnotatedElement
クラス・ローダーに関連付けられたランタイム・パッケージに関するメタデータを表します。 メタデータには、注釈、バージョニングおよびシールが含まれます。

ランタイム・パッケージの注釈は、ランタイム・パッケージのクラスと同じコード・ソースでpackage-info.classから読み取られます。

ランタイム・パッケージを構成するクラスのセットは、特定の仕様を実装できます。 仕様のタイトル、バージョンおよびベンダー(仕様の所有者/保守者を示す)は、Packageが定義されている場合に指定できます。 アプリケーションは、Package.isCompatibleWith(String)メソッドを使用して、Packageが特定の仕様バージョンと互換性があるかどうかを尋ねることができます。 また、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
関連項目: