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

クラスModuleDescriptor

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

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

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

モジュール記述子は、normal、open、またはautomaticモジュールを記述します。 「ノーマル」モジュールとオープン・モジュールは、dependencesexported-packagesuseまたは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

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

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

      public Optional<String> rawVersion()

      モジュールの解析できないバージョンの文字列を返します

      戻り値:
      モジュールのバージョンを含む文字列、またはモジュールにバージョンがない場合は空のOptional
      関連項目:
      version()
    • 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
      関連項目:
      Object.hashCode()HashMap
    • hashCode

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

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

      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      このモジュール記述子のハッシュ・コード値
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.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であるか、正当なモジュール名ではない
      関連項目:
      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-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 - 無効なモジュール記述子が検出された場合