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

クラスPackage

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

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

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

実行時パッケージを構成するクラスのセットは、特定の仕様を実装することができます。 Packageが定義されている場合、仕様タイトル、バージョン、およびベンダー(仕様の所有者/保守者を示す)を提供できます。 アプリケーションは、PackagePackage.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から読み込まれます。

PackagePackage.getPackage(String)ClassLoader.getDefinedPackage(String)メソッドで取得できます。 クラス・ローダーによって定義されたすべてのPackageは、Package.getPackages()およびClassLoader.getDefinedPackages()メソッドを使用して取得できます。

実装上のノート:
「組み込みクラス・ローダー」は、「名前付きモジュール」内のパッケージのPackageオブジェクトを明示的に定義しません。 代わりに、それらのパッケージは自動的に定義され、仕様と実装のバージョニング情報はありません。
Java Virtual Machine仕様を参照してください:
5.3 作成およびロード
導入されたバージョン:
1.2
関連項目:
「JARファイルの仕様: パッケージ・シーリング」, ClassLoader.definePackage(String, String, String, String, String, String, String, URL)
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    <A extends Annotation>
    A
    getAnnotation​(Class<A> annotationClass)
    存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。
    この要素に存在する注釈を返します。
    <A extends Annotation>
    A[]
    getAnnotationsByType​(Class<A> annotationClass)
    この要素に関連付けられている注釈を返します。
    <A extends Annotation>
    A
    getDeclaredAnnotation​(Class<A> annotationClass)
    直接存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。
    この要素に直接存在する注釈を返します。
    <A extends Annotation>
    A[]
    getDeclaredAnnotationsByType​(Class<A> annotationClass)
    直接存在する間接的に存在する場合は、この要素の指定された型の注釈を返します。
    このパッケージのタイトルを返します。
    このパッケージを実装したベンダーを返します。不明な場合はnullが返されます。
    この実装のバージョンを返します。
    このパッケージの名前を返します。
    static Package
    getPackage​(String name)
    非推奨。
    複数のクラス・ローダーが互いに委譲して同じパッケージ名を持つクラスを定義し、そのようなローダーの1つがgetPackageのルックアップ動作に依存して親ローダーからPackageを返す場合、Packageによって公開されるプロパティは残りのプログラムで期待どおりにならない場合があります。
    static Package[]
    呼び出し側クラス・ローダーとその祖先によって定義されたPackageをすべて返します。
    このパッケージが実装する仕様のタイトルを返します。
    このパッケージを実装するクラスの仕様を所有して保持する組織、ベンダー、または会社の名前を返します。
    このパッケージが実装する仕様のバージョン番号を返します。
    int
    パッケージ名から計算されたハッシュ・コードを返します。
    boolean
    isAnnotationPresent​(Class<? extends Annotation> annotationClass)
    指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。
    boolean
    このパッケージの仕様のバージョンを目的のバージョンと比較します。
    boolean
    このパッケージがシールされる場合は、trueを返します。
    boolean
    isSealed​(URL url)
    指定されたコード・ソースurlに対してこのパッケージが封印されている場合はtrueを返します。
    この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()
      このパッケージが実装する仕様のバージョン番号を返します。 このバージョン文字列は、"."で区切られた非負の10進整数のシーケンスでなければならず、先頭にゼロが付いている可能性があります。 バージョン文字列が比較されると、最上位番号が比較されます。

      仕様のバージョン番号は、"2.0"や"1.2.3.4.5.6.7"のように、ピリオド"."で区切られた非負の10進整数で構成される構文を使用します。 この形式によって、メジャー、マイナー、マイクロなどのバージョンを表現するように、番号を拡張することができます。 仕様のバージョン番号は、次の正規文法によって記述されます。

      SpecificationVersion:
      Digits RefinedVersionopt
      RefinedVersion:
      . Digits
      . Digits RefinedVersion
      Digits:
      Digit
      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 - namenullの場合。
      関連項目:
      ClassLoader.getDefinedPackage(java.lang.String)
    • getPackages

      public static Package[] getPackages()
      呼び出し側クラス・ローダーとその祖先によって定義されたPackageをすべて返します。 返される配列には、同じパッケージ名の複数のPackageオブジェクトが含まれ、それぞれがクラス・ローダー階層の異なるクラス・ローダーによって定義されます。

      このメソッドを呼び出すことは、呼び出し側クラス・ローダーであるClassLoaderインスタンスでClassLoader.getPackages()を呼び出すことと同じです。

      戻り値:
      このクラス・ローダーとその祖先によって定義されたPackageオブジェクトの配列
      関連項目:
      ClassLoader.getDefinedPackages()
    • hashCode

      public int hashCode()
      パッケージ名から計算されたハッシュ・コードを返します。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      パッケージ名から計算されたハッシュ・コード。
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
    • toString

      public String toString()
      このPackageの文字列表現を返します。 この値は、文字列「package」とパッケージ名です。 パッケージのタイトルが定義されている場合、それが付加されます。 パッケージのバージョンが定義されている場合、それが付加されます。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      パッケージの文字列表現。
    • 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