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

クラスModuleDescriptor

  • すべての実装されたインタフェース:
    Comparable<ModuleDescriptor>

    public class ModuleDescriptor
    extends Object
    implements Comparable<ModuleDescriptor>
    モジュール記述子。

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

    モジュール記述子は、標準モジュール、オープン・モジュールまたは自動モジュールを記述します。 標準モジュールおよびオープン・モジュールは、それらのdependencesexported-packages、それらがuseまたはprovideとするサービス、およびその他のコンポーネントを記述します。 通常のモジュールは、特定のパッケージをopenできます。 オープン・モジュールのモジュール記述子は、オープン・パッケージを宣言しません(opensメソッドは空のセットを返します)。ただし、Java仮想マシンでインスタンス化されると、すべてのパッケージがオープンしているかのように処理されます。 自動モジュールのモジュール記述子は、依存性を宣言しません( java.baseに対する必須の依存性を除く)。また、エクスポートされたパッケージまたはオープンされたパッケージは宣言しません。 自動モジュールは、構成内の他のすべてのモジュールを読み取るように、解像度中に特別な処理を受けます。 Java仮想マシンで自動モジュールがインスタンス化されると、名前のないすべてのモジュールが読み取られ、すべてのパッケージがエクスポートされてオープンしているかのように扱われます。

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

    導入されたバージョン:
    9
    関連項目:
    Module
    • メソッドの詳細

      • name

        public String name()

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

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

        public Set<ModuleDescriptor.Modifier> modifiers()

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

        戻り値:
        変更不可の可能性がある修飾子のセット
      • 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

        public Optional<ModuleDescriptor.Version> version()

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

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

        public Optional<String> rawVersion()

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

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

        public String toNameAndVersion()

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

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

        public Optional<String> mainClass()

        モジュールのmainクラスを返します。

        戻り値:
        モジュールのメイン・クラスの完全修飾クラス名
      • packages

        public Set<String> packages()
        モジュール内のパッケージのセットを返します。

        パッケージ・セットには、エクスポートされたパッケージとオープン・パッケージ、すべてのサービス・プロバイダのパッケージ、およびメイン・クラスのパッケージが含まれます。

        戻り値:
        モジュール内の変更不可の可能性があるパッケージのセット
      • compareTo

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

        2つのModuleDescriptorオブジェクトは、そのモジュール名を辞書順に比較することによって比較されます。 モジュール名が等しい場合は、モジュールのバージョンが比較されます。 モジュール・バージョンを比較する場合、バージョンを持つモジュール記述子は、バージョンを持たないモジュール記述子の後継とみなされます。 両方のバージョンが解析不可能の場合、rawバージョン文字列は辞書順で比較されます。 モジュール名が等しく、バージョンが等しい(または両方に存在しない)場合、修飾子のセットが比較されます。 モディファイアのセットは、各セットについて計算されたバイナリ値を比較することによって比較されます。 修飾子がセットに存在する場合、その序数の位置にあるビットは、バイナリ値では1、それ以外の場合は0です。 2つの修飾子セットも等しい場合、モジュール記述子の他のコンポーネントは、equalsと一貫性のある方法で比較されます。

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

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

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

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

        オーバーライド:
        equals、クラスObject
        パラメータ:
        ob - このオブジェクトと比較するオブジェクト
        戻り値:
        指定されたオブジェクトがこのモジュール記述子と等しいモジュール記述子である場合にかぎり、true
        関連項目:
        Object.hashCode()HashMap
      • 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であるか、有効なモジュール名ではない場合
        関連項目:
        ModuleFinder.of(Path[])
      • 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引数の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引数のreadメソッドで指定されているとおりに機能します。ただし、バッファにエンコードされたモジュール記述子がパッケージのセットを示さない場合、パッケージャ・ファインダは追加パッケージの検索に使用されません。
        パラメータ:
        bb - バイト・バッファ
        戻り値:
        モジュール記述子
        例外:
        InvalidModuleDescriptorException - 無効なモジュール記述子が検出された場合