クラスModuleDescriptor

java.lang.Object
java.lang.module.ModuleDescriptor
すべての実装されたインタフェース:
Comparable<ModuleDescriptor>

public finalクラスModuleDescriptor オブジェクトComparable<ModuleDescriptor>を実装する拡張
モジュール記述子。

モジュール記述子は、名前付きモジュールを記述し、その各コンポーネントを取得するメソッドを定義します。 Java仮想マシン内の名前付きモジュールのモジュール記述子は、ModulegetDescriptorメソッドを呼び出すことによって取得されます。 モジュール記述子は、ModuleDescriptor.Builderクラスを使用するか、ここで定義したreadメソッドを使用してモジュール宣言(module-info.class)のバイナリ形式を読み取ることによって作成することもできます。

モジュール記述子は、normal、openまたはautomaticモジュールを記述します。 「ノーマル」モジュールおよびオープン・モジュールでは、「依存関係」exported-packagesuseまたは「提供」が提供するサービス、およびその他のコンポーネントについて説明します。 「ノーマル」モジュールは、open固有のパッケージの場合があります。 オープン・モジュールのモジュール記述子はオープン・パッケージ(そのopensメソッドは空のセットを返します)を宣言しませんが、Java仮想マシンでインスタンス化すると、すべてのパッケージがオープンしているかのように扱われます。 自動モジュールのモジュール記述子では、依存関係( java.baseの必須の依存関係を除いて)は宣言されず、エクスポートされたパッケージまたはオープン・パッケージは宣言されません。 自動モジュールは、構成内の他のすべてのモジュールを読み取るために、解決中に特別な処理を受け取ります。 自動モジュールがJava仮想マシンでインスタンス化されると、名前のないすべてのモジュールが読み取られ、すべてのパッケージがエクスポートされて開かれているかのように処理されます。

ModuleDescriptorオブジェクトは不変であり、複数の同時スレッドで使用しても安全です。

導入されたバージョン:
9
関連項目:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static final class 
    ModuleDescriptorオブジェクトをビルドするためのビルダー。
    static final class 
    モジュールによってエクスポートされたパッケージは、修飾または修飾されていない場合があります。
    static enum 
    モジュール上の修飾子。
    static final class 
    モジュールによって開かれたパッケージは、修飾または修飾されていない場合があります。
    static final class 
    モジュールが1つ以上の実装を提供するサービス。
    static final class 
    モジュールへの依存性。
    static final class 
    モジュールのバージョン文字列。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    「モジュール・フラグ」のセットを返します。
    int
    このモジュール記述子を別のモジュール記述子と比較します。
    boolean
    このモジュール記述子が、指定されたオブジェクトと等しいかどうかをテストします。
    エクスポートされたパッケージを表すExportsオブジェクトのセットを返します。
    int
    このモジュール記述子のハッシュ・コードを計算します。
    boolean
    これが自動モジュールの場合は、trueを返します。
    boolean
    オープン・モジュールの場合は、trueを返します。
    モジュール・メイン・クラスを返します。
    モジュール修飾子のセットを返します。
    モジュール名を返します。
    ビルダーをインスタンス化して、自動モジュールのモジュール記述子を作成します。
    normalモジュールのモジュール記述子を構築するビルダーをインスタンス化します。
    ビルダーをインスタンス化してモジュール記述子を作成します。
    ビルダーをインスタンス化して、オープン・モジュールのモジュール記述子を作成します。
    オープン・パッケージを表すOpensオブジェクトのセットを返します。
    モジュール内のすべてのパッケージのセットを返します。
    モジュールが提供するサービスを表すProvidesオブジェクトのセットを返します。
    おそらく解析不能なバージョンのモジュールを含む文字列を返します。
    モジュール宣言のバイナリ形式を入力ストリームからモジュール記述子として読み取ります。
    read(InputStream in, Supplier<Set<String>> packageFinder)
    モジュール宣言のバイナリ形式を入力ストリームからモジュール記述子として読み取ります。
    モジュール宣言のバイナリ形式をバイト・バッファからモジュール記述子として読み取ります。
    read(ByteBuffer bb, Supplier<Set<String>> packageFinder)
    モジュール宣言のバイナリ形式をバイト・バッファからモジュール記述子として読み取ります。
    モジュールの依存関係を表すRequiresオブジェクトのセットを返します。
    モジュール名とそのバージョン(存在する場合)を含む文字列を返します。
    モジュールを記述する文字列を返します。
    サービス依存関係のセットを返します。
    モジュールのバージョンを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • メソッドの詳細

    • name

      public String name()

      モジュール名を返します。

      戻り値:
      モジュール名
    • modifiers

      public Set<ModuleDescriptor.Modifier> modifiers()

      モジュール修飾子のセットを返します。

      戻り値:
      おそらく空の変更不可能な修飾子のセット
    • accessFlags

      public Set<AccessFlag> accessFlags()
      「モジュール・フラグ」のセットを返します。
      戻り値:
      変更不可能なモジュール・フラグのセットが空である可能性があります
      Java Virtual Machine仕様を参照してください:
      「4.7.25 モジュール属性」
      導入されたバージョン:
      20
      関連項目:
    • isOpen

      public boolean isOpen()

      オープン・モジュールの場合は、trueを返します。

      このメソッドは、modifiersのセットにOPEN修飾子が含まれているかどうかのテストと同等です。

      戻り値:
      trueオープン・モジュールの場合
    • isAutomatic

      public boolean isAutomatic()

      これが自動モジュールの場合は、trueを返します。

      このメソッドは、modifiersのセットにAUTOMATIC修飾子が含まれているかどうかのテストと同等です。

      戻り値:
      trueこれが自動モジュールの場合
    • requires

      public Set<ModuleDescriptor.Requires> requires()

      モジュールの依存関係を表すRequiresオブジェクトのセットを返します。

      セットには、このモジュールの名前が"java.base"でない場合の"java.base"への依存が含まれています。 このモジュールが自動モジュールである場合、"java.base"以外のモジュールには依存しません。

      戻り値:
      ModuleDescriptor.Requiresオブジェクトの、おそらく空の変更不可能なセット
    • exports

      public Set<ModuleDescriptor.Exports> exports()

      エクスポートされたパッケージを表すExportsオブジェクトのセットを返します。

      このモジュールが自動モジュールの場合、エクスポート・セットは空です。

      戻り値:
      エクスポートされたパッケージのおそらく空の変更不可能なセット
    • opens

      public Set<ModuleDescriptor.Opens> opens()

      オープン・パッケージを表すOpensオブジェクトのセットを返します。

      このモジュールがオープン・モジュールまたは自動モジュールの場合、オープン・パッケージのセットは空です。

      戻り値:
      可能な限り空の変更不可能なオープン・パッケージのセット
    • uses

      public Set<String> uses()

      サービス依存関係のセットを返します。

      このモジュールが自動モジュールの場合、サービス依存関係のセットは空です。

      戻り値:
      使用されるサービス・タイプの「バイナリ名」の空の変更不可セット
    • provides

      public Set<ModuleDescriptor.Provides> provides()

      モジュールが提供するサービスを表すProvidesオブジェクトのセットを返します。

      戻り値:
      このモジュールが提供するサービスの、おそらく空の変更不可能なセット
    • version

      モジュールのバージョンを返します。

      戻り値:
      このモジュールのバージョン、またはモジュールにバージョンがないか、バージョンがunparseableの場合は空のOptional
    • rawVersion

      public Optional<String> rawVersion()

      おそらく解析不能なバージョンのモジュールを含む文字列を返します。

      戻り値:
      モジュールのバージョンを含む文字列、またはモジュールにバージョンがない場合は空のOptional
      関連項目:
    • toNameAndVersion

      public String toNameAndVersion()

      モジュール名とそのバージョン(存在する場合)を含む文字列を返します。

      戻り値:
      モジュール名とそのバージョン(存在する場合)を含む文字列
    • mainClass

      public Optional<String> mainClass()

      モジュール・メイン・クラスを返します。

      戻り値:
      モジュールのメイン・クラスの「バイナリ名」
    • packages

      public Set<String> packages()
      モジュール内のすべてのパッケージのセットを返します。
      戻り値:
      おそらく空の、モジュール内のパッケージの変更不可能なセット
    • compareTo

      public int compareTo(ModuleDescriptor that)
      このモジュール記述子を別のモジュール記述子と比較します。

      2つのModuleDescriptorオブジェクトは、モジュール名を辞書順に比較することによって比較されます。 モジュール名が等しい場合、モジュールのバージョンが比較されます。 モジュール・バージョンを比較する場合、モジュール記述子とバージョンがバージョンを持たないモジュール記述子が成功するとみなされます。 両方のバージョンがunparseableの場合、「生バージョンの文字列」は辞書順で比較されます。 モジュール名が等しく、バージョンが(または両方に存在しない)の場合、修飾子のセットが比較されます。 修飾子のセットは、各セットに対して計算された「バイナリ値」を比較することによって比較されます。 修飾子がセットに存在する場合、その序数位置のビットはバイナリ値の1、それ以外の場合は0です。 2組の修飾語が同じ場合、equalsと一貫性のある方法で、モジュール記述子の他のコンポーネントが比較されます。

      定義:
      インタフェースComparable<ModuleDescriptor>内のcompareTo
      パラメータ:
      that - 比較するモジュール記述子
      戻り値:
      このモジュール記述子が指定されたモジュール記述子より小さい、等しい、または大きい場合は、負の整数、ゼロ、または正の整数
    • equals

      public boolean equals(Object ob)
      このモジュール記述子が、指定されたオブジェクトと等しいかどうかをテストします。

      指定されたオブジェクトがModuleDescriptorでない場合、このメソッドはfalseを返します。 対応する各コンポーネントが等しい場合は、2つのモジュール記述子が等しくなります。

      このメソッドはObject.equalsメソッドの汎用規約を満たします。

      オーバーライド:
      equals、クラスObject
      パラメータ:
      ob - このオブジェクトと比較するオブジェクト
      戻り値:
      指定されたオブジェクトがこのモジュール記述子と等しいモジュール記述子である場合にかぎり、true
      関連項目:
    • hashCode

      public int hashCode()
      このモジュール記述子のハッシュ・コードを計算します。

      ハッシュ・コードは、モジュール記述子のコンポーネントに基づいており、Object.hashCodeメソッドの一般規約を満たしています。

      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このモジュール記述子のハッシュ・コード値
      関連項目:
    • toString

      public String toString()

      モジュールを記述する文字列を返します。

      オーバーライド:
      toString、クラスObject
      戻り値:
      モジュールを記述する文字列
    • newModule

      public static ModuleDescriptor.Builder newModule(String name, Set<ModuleDescriptor.Modifier> ms)
      ビルダーをインスタンス化してモジュール記述子を作成します。
      パラメータ:
      name - モジュール名
      ms - モジュール修飾子のセット
      戻り値:
      新しいビルダー
      スロー:
      IllegalArgumentException - モジュール名がnullであるか、有効なモジュール名でない場合、または修飾子のセットに他の修飾子を含むAUTOMATICが含まれている場合
    • newModule

      public static ModuleDescriptor.Builder newModule(String name)
      normalモジュールのモジュール記述子を構築するビルダーをインスタンス化します。 このメソッドは、modifiersの空のセットでnewModuleを呼び出すのと同じです。
      パラメータ:
      name - モジュール名
      戻り値:
      新しいビルダー
      スロー:
      IllegalArgumentException - モジュール名がnullであるか、正当なモジュール名ではない
    • newOpenModule

      public static ModuleDescriptor.Builder newOpenModule(String name)
      ビルダーをインスタンス化して、オープン・モジュールのモジュール記述子を作成します。 このメソッドは、OPEN修飾子を使用してnewModuleを呼び出すのと同等です。

      オープン・モジュールのビルダーは、オープン・パッケージの宣言には使用できません。

      パラメータ:
      name - モジュール名
      戻り値:
      開いているモジュールを構築する新しいビルダー
      スロー:
      IllegalArgumentException - モジュール名がnullであるか、正当なモジュール名ではない
    • newAutomaticModule

      public static ModuleDescriptor.Builder newAutomaticModule(String name)
      ビルダーをインスタンス化して、自動モジュールのモジュール記述子を作成します。 このメソッドは、AUTOMATIC修飾子を使用してnewModuleを呼び出すのと同等です。

      自動モジュールのビルダーは、モジュールまたはサービスの依存関係の宣言には使用できません。 また、エクスポートされたパッケージまたは開いているパッケージの宣言には使用できません。

      パラメータ:
      name - モジュール名
      戻り値:
      自動モジュールを構築する新しいビルダー
      スロー:
      IllegalArgumentException - モジュール名がnullであるか、正当なモジュール名ではない
      関連項目:
    • read

      public static ModuleDescriptor read(InputStream in, Supplier<Set<String>> packageFinder) throws IOException
      モジュール宣言のバイナリ形式を入力ストリームからモジュール記述子として読み取ります。

      入力ストリームでエンコードされた記述子がモジュール内のパッケージのセットを示していない場合、packageFinderが呼び出されます。 packageFinderが返すパッケージのセットには、モジュールがエクスポート、開くすべてのパッケージ、およびモジュールが提供するサービス実装のパッケージ、およびメイン・クラス(モジュールにメイン・クラスがある場合)のパッケージが含まれている必要があります。 packageFinderUncheckedIOExceptionをスローすると、IOExceptionの原因が再スローされます。

      モジュール記述子の後ろにバイトがある場合、そのバイトがInvalidModuleDescriptorExceptionとして読み取られたり、無視されたり、レポートされたりするかどうかに関する実装固有です。 このメソッドがInvalidModuleDescriptorExceptionまたは IOExceptionで失敗した場合は、入力ストリームから一部のバイト(すべてではない)が読み取られた後で失敗する可能性があります。 例外が発生した場合は、ストリームをすぐに閉じ、破棄することを強くお勧めします。

      APIのノート:
      packageFinderパラメータは、パッケージ・セットを記述子自体に記録しないレガシー・モジュール・アーティファクト形式からモジュール記述子を読み取る場合に使用します。
      パラメータ:
      in - 入力ストリーム
      packageFinder - パッケージのセットを作成できるサプライヤ
      戻り値:
      モジュール記述子
      スロー:
      InvalidModuleDescriptorException - 無効なモジュール記述子が検出された場合、またはpackageFinderによって返されたパッケージのセットに、モジュール記述子から取得されたすべてのパッケージが含まれていない場合
      IOException - 入力ストリームからの読取りでI/Oエラーが発生した場合、またはパッケージ・ファインダによって UncheckedIOExceptionがスローされた場合
    • read

      public static ModuleDescriptor read(InputStream in) throws IOException
      モジュール宣言のバイナリ形式を入力ストリームからモジュール記述子として読み取ります。 このメソッドは、2-arg readメソッドで指定されたとおりに機能します。ただし、ストリームから読み取られたモジュール記述子がパッケージのセットを示していない場合、パッケージ・ファインダを使用して追加のパッケージを検索することはありません。
      パラメータ:
      in - 入力ストリーム
      戻り値:
      モジュール記述子
      スロー:
      InvalidModuleDescriptorException - 無効なモジュール記述子が検出された場合
      IOException - 入力ストリームからの読取りでI/Oエラーが発生した場合
    • read

      public static ModuleDescriptor read(ByteBuffer bb, Supplier<Set<String>> packageFinder)
      モジュール宣言のバイナリ形式をバイト・バッファからモジュール記述子として読み取ります。

      バイト・バッファでエンコードされた記述子がモジュール内のパッケージのセットを示していない場合、packageFinderが呼び出されます。 packageFinderが返すパッケージのセットには、モジュールがエクスポート、開くすべてのパッケージ、およびモジュールが提供するサービス実装のパッケージ、およびメイン・クラス(モジュールにメイン・クラスがある場合)のパッケージが含まれている必要があります。 packageFinderUncheckedIOExceptionをスローすると、IOExceptionの原因が再スローされます。

      モジュール記述子は、索引pからバッファから読み取られます。このメソッドが呼び出されると、pはバッファpositionになります。 戻されると、バッファの位置はp + nと等しくなります。ここで、nはバッファから読み取られたバイト数です。

      モジュール記述子の後ろにバイトがある場合、そのバイトがInvalidModuleDescriptorExceptionとして読み取られたり、無視されたり、レポートされたりするかどうかに関する実装固有です。 このメソッドがInvalidModuleDescriptorExceptionで失敗した場合は、一部のバイト(すべてではない)が読み取られた後で失敗する可能性があります。

      APIのノート:
      packageFinderパラメータは、パッケージ・セットを記述子自体に記録しないレガシー・モジュール・アーティファクト形式からモジュール記述子を読み取る場合に使用します。
      パラメータ:
      bb - バイト・バッファ
      packageFinder - パッケージのセットを作成できるサプライヤ
      戻り値:
      モジュール記述子
      スロー:
      InvalidModuleDescriptorException - 無効なモジュール記述子が検出された場合、またはpackageFinderによって返されたパッケージのセットに、モジュール記述子から取得されたすべてのパッケージが含まれていない場合
    • read

      public static ModuleDescriptor read(ByteBuffer bb)
      モジュール宣言のバイナリ形式をバイト・バッファからモジュール記述子として読み取ります。 このメソッドは、2-arg readメソッドで指定されたとおりに機能します。ただし、バッファにエンコードされたモジュール記述子がパッケージのセットを示していない場合、パッケージ・ファインダを使用して追加のパッケージを検索することはありません。
      パラメータ:
      bb - バイト・バッファ
      戻り値:
      モジュール記述子
      スロー:
      InvalidModuleDescriptorException - 無効なモジュール記述子が検出された場合