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

クラスModule

  • すべての実装されたインタフェース:
    AnnotatedElement

    public final class Module
    extends Object
    implements AnnotatedElement
    ランタイム・モジュールnamedまたはunnamedのいずれかを表します。

    名前付きモジュールにはnameがあり、「モジュール層」を作成するためにモジュールのグラフがJava Virtual Machineに定義されると、Java Virtual Machineによって構築されます。

    名前のないモジュールには名前がありません。 getUnnamedModuleメソッドを呼び出すことによって得られる、各ClassLoaderの名前のないモジュールがあります。 名前付きモジュールにないすべての型は、定義されているクラス・ローダーの名前のないモジュールのメンバーです。

    このクラスで定義されたメソッドによって返される、パラメータであるパッケージ名は、「Java™言語仕様」のセクション6.5.3で定義されているパッケージの完全修飾名です(例:"java.lang")。

    特に指定しない限り、null引数をこのクラスのメソッドに渡すと、NullPointerExceptionがスローされます。

    導入されたバージョン:
    9
    関連項目:
    Class.getModule()
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      Module addExports​(String pn, Module other)
      呼び出し側モジュールがこのモジュールである場合、このモジュールを更新して、指定されたパッケージを指定されたモジュールにエクスポートします。
      Module addOpens​(String pn, Module other)
      このモジュールが少なくとも呼び出しモジュールへのパッケージを「オープン」で作成した場合、このモジュールを更新して、指定されたモジュールへのパッケージを開きます。
      Module addReads​(Module other)
      呼び出し元モジュールがこのモジュールである場合、このモジュールを更新して、指定されたモジュールを読み取ります。
      Module addUses​(Class<?> service)
      呼び出し側モジュールがこのモジュールである場合、このモジュールを更新して、指定されたサービス型にサービス依存を追加します。
      boolean canRead​(Module other)
      このモジュールが指定されたモジュールを読み込むかどうかを示します。
      boolean canUse​(Class<?> service)
      このモジュールが指定されたサービス型にサービス依存するかどうかを示します。
      <T extends Annotation>
      T
      getAnnotation​(Class<T> annotationClass)
      存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。
      Annotation[] getAnnotations()
      この要素に存在する注釈を返します。
      ClassLoader getClassLoader()
      このモジュールのClassLoaderを返します。
      Annotation[] getDeclaredAnnotations()
      この要素に直接存在する注釈を返します。
      ModuleDescriptor getDescriptor()
      このモジュールのモジュール記述子を返します。このモジュールが名前のないモジュールである場合はnullを返します。
      ModuleLayer getLayer()
      このモジュールがモジュール・レイヤーにない場合は、このモジュールを含むモジュール・レイヤーまたはnullを返します。
      String getName()
      このモジュールが名前のないモジュールである場合、モジュール名またはnullを返します。
      Set<String> getPackages()
      このモジュール内のパッケージのパッケージ名のセットを返します。
      InputStream getResourceAsStream​(String name)
      このモジュール内のリソースを読み込むための入力ストリームを返します。
      boolean isExported​(String pn)
      このモジュールが指定されたパッケージを無条件でエクスポートする場合は、trueを返します。
      boolean isExported​(String pn, Module other)
      このモジュールが与えられたパッケージを少なくとも与えられたモジュールにエクスポートする場合は、trueを返します。
      boolean isNamed()
      このモジュールが名前付きモジュールである場合は、trueを返します。
      boolean isOpen​(String pn)
      このモジュールがパッケージを無条件にパッケージを「オープン」している場合は、trueを返します。
      boolean isOpen​(String pn, Module other)
      このモジュールが少なくとも与えられたモジュールへのパッケージを「オープン」している場合は、trueを返します。
      String toString()
      このモジュールの文字列表現を返します。
    • メソッドの詳細

      • isNamed

        public boolean isNamed()
        このモジュールが名前付きモジュールである場合は、trueを返します。
        戻り値:
        trueが名前付きモジュールの場合
        関連項目:
        ClassLoader.getUnnamedModule()
      • getName

        public String getName()
        このモジュールが名前のないモジュールである場合、モジュール名またはnullを返します。
        戻り値:
        モジュール名
      • getClassLoader

        public ClassLoader getClassLoader()
        このモジュールのClassLoaderを返します。

        セキュリティ・マネージャが存在する場合は、最初にRuntimePermission("getClassLoader")アクセス許可で呼び出された場合はcheckPermissionメソッドが呼び出され、呼び出し元がクラス・ローダーにアクセスできることを確認します。

        戻り値:
        このモジュールのクラス・ローダー
        例外:
        SecurityException - セキュリティ・マネージャによって拒否された場合
      • getDescriptor

        public ModuleDescriptor getDescriptor()
        このモジュールのモジュール記述子を返します。このモジュールが名前のないモジュールである場合はnullを返します。
        戻り値:
        このモジュールのモジュール記述子
      • getLayer

        public ModuleLayer getLayer()
        このモジュールがモジュール・レイヤーにない場合は、このモジュールを含むモジュール・レイヤーまたはnullを返します。 モジュール・レイヤーには名前付きモジュールが含まれているため、このメソッドは名前のないモジュールで呼び出されたときに常にnullを返します。

        「ダイナミック・モジュール」は実行時に生成される名前付きモジュールです。 ダイナミック・モジュールは、モジュール・レイヤー内にあってもなくてもよい。

        戻り値:
        このモジュールを含むモジュール・レイヤー
        関連項目:
        Proxy
      • canRead

        public boolean canRead​(Module other)
        このモジュールが指定されたモジュールを読み込むかどうかを示します。 このメソッドが呼び出された場合、このモジュールは自身を読み込むかどうかを調べるためにtrueを返します。 また、名前のないモジュール(名前のないモジュールはすべてのモジュールを読み込む)で呼び出された場合は、trueを返します。
        パラメータ:
        other - 他のモジュール
        戻り値:
        trueこのモジュールがotherを読み取る場合
        関連項目:
        addReads(Module)
      • addReads

        public Module addReads​(Module other)
        呼び出し元モジュールがこのモジュールである場合、このモジュールを更新して、指定されたモジュールを読み取ります。 このメソッドは、otherがこのモジュール(すべてのモジュールが自分自身を読む)である場合、このモジュールはノー・オペレーションであり、このモジュールは名前のないモジュール(名前のないモジュールはすべてのモジュールを読み込む)であるか、またはこのモジュールはすでにotherを読み込んでいます。
        実装上の注意:
        このメソッドで追加された「エッジを読み取る」weakであり、otherはこのモジュールが強く到達可能なときにGC'edされることを防ぎません。
        パラメータ:
        other - 他のモジュール
        戻り値:
        このモジュール
        例外:
        IllegalCallerException - これが名前付きモジュールで、呼び出し側モジュールがこのモジュールでない場合
        関連項目:
        canRead(java.lang.Module)
      • isExported

        public boolean isExported​(String pn,
                                  Module other)
        このモジュールが与えられたパッケージを少なくとも与えられたモジュールにエクスポートする場合は、trueを返します。

        このメソッドは、このモジュール内のパッケージが自身にエクスポートされているかどうかをテストするために呼び出されると、trueを返します。 名前のないモジュールで呼び出されると、常にtrueを返します。 指定されたモジュールへのopenであるパッケージは、実行時にそのモジュールにエクスポートされると見なされるので、パッケージがそのモジュールに対して開いている場合、このメソッドはtrueを返します。

        このメソッドは、指定されたモジュールがこのモジュールを読み取るかどうかをチェックしません。

        パラメータ:
        pn - パッケージ名
        other - 他のモジュール
        戻り値:
        trueこのモジュールがパッケージを少なくとも指定されたモジュールにエクスポートする場合
        関連項目:
        ModuleDescriptor.exports(), addExports(String,Module)
      • isOpen

        public boolean isOpen​(String pn,
                              Module other)
        このモジュールが少なくとも与えられたモジュールへのパッケージを「オープン」している場合は、trueを返します。

        このメソッドは、呼び出されるとtrueを返して、このモジュールのパッケージがそれ自身に対して開いているかどうかをテストします。 モジュール内にパッケージがあるopenモジュールで呼び出されると、trueを返します。 名前のないモジュールで呼び出されると、常にtrueを返します。

        このメソッドは、指定されたモジュールがこのモジュールを読み取るかどうかをチェックしません。

        パラメータ:
        pn - パッケージ名
        other - 他のモジュール
        戻り値:
        trueこのモジュールがパッケージを少なくとも指定されたモジュールに「オープン」している場合
        関連項目:
        ModuleDescriptor.opens(), addOpens(String,Module), AccessibleObject#setAccessible(boolean), MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)
      • isExported

        public boolean isExported​(String pn)
        このモジュールが指定されたパッケージを無条件でエクスポートする場合は、trueを返します。

        このメソッドは、名前のないモジュールで呼び出されたときに常にtrueを返します。 無条件にopenedであるパッケージは、実行時に無条件に書き出されると見なされるため、パッケージが無条件で開かれた場合、このメソッドはtrueを返します。

        このメソッドは、指定されたモジュールがこのモジュールを読み取るかどうかをチェックしません。

        パラメータ:
        pn - パッケージ名
        戻り値:
        このモジュールが無条件にパッケージをエクスポートする場合はtrue
        関連項目:
        ModuleDescriptor.exports()
      • isOpen

        public boolean isOpen​(String pn)
        このモジュールがパッケージを無条件にパッケージを「オープン」している場合は、trueを返します。

        このメソッドは、名前のないモジュールで呼び出されたときに常にtrueを返します。 さらに、モジュール内のパッケージを含むopenモジュールで呼び出されると、常にtrueを返します。

        このメソッドは、指定されたモジュールがこのモジュールを読み取るかどうかをチェックしません。

        パラメータ:
        pn - パッケージ名
        戻り値:
        trueこのモジュールがパッケージを無条件で「オープン」している場合
        関連項目:
        ModuleDescriptor.opens()
      • addExports

        public Module addExports​(String pn,
                                 Module other)
        呼び出し側モジュールがこのモジュールである場合、このモジュールを更新して、指定されたパッケージを指定されたモジュールにエクスポートします。

        パッケージがすでに指定されたモジュールに(またはopen)にエクスポートされている場合、このメソッドは効果がありません。

        APIの注:
        「Java™仮想マシン仕様」のセクション5.4.3で指定されているように、リンケージ・エラーのためにシンボリック・リファレンスを解決しようとする試みが失敗した場合、最初の解決試行の結果としてスローされたのと同じエラーで、。
        パラメータ:
        pn - パッケージ名
        other - モジュール
        戻り値:
        このモジュール
        例外:
        IllegalArgumentException - pnnullの場合、またはこれが名前付きモジュールであり、パッケージpnがこのモジュールのパッケージでない場合
        IllegalCallerException - これが名前付きモジュールで、呼び出し側モジュールがこのモジュールでない場合
        関連項目:
        isExported(String,Module)
        Java™仮想マシン仕様:
        5.4.3 解決内容
      • addOpens

        public Module addOpens​(String pn,
                               Module other)
        このモジュールが少なくとも呼び出しモジュールへのパッケージを「オープン」で作成した場合、このモジュールを更新して、指定されたモジュールへのパッケージを開きます。 このメソッドを使用してパッケージを開くと、プライベート・アクセスをサポートするAPIを使用する場合や、デフォルトをバイパスまたは抑制する方法の場合、パッケージ内のすべての型が許可され、パブリック型およびパブリック・メンバーだけでなく、それらのメンバーも指定されたモジュールに反映されますJava言語のアクセス制御チェック。

        パッケージがすでに指定されたモジュールに対してopenであれば、このメソッドは効果がありません。

        APIの注:
        このメソッドは、「消費者モジュール」が修飾されたオープンを使用してパッケージを「APIモジュール」にオープンするが、コンシューマ・モジュールのクラスのメンバーへのリフレクション・アクセスが別のモジュールのコードに委譲される場合に使用できます。 APIモジュールのコードは、このメソッドを使用してコンシューマ・モジュールのパッケージを他のモジュールに開くことができます。
        パラメータ:
        pn - パッケージ名
        other - モジュール
        戻り値:
        このモジュール
        例外:
        IllegalArgumentException - pnnullの場合、またはこれが名前付きモジュールであり、パッケージpnがこのモジュールのパッケージでない場合
        IllegalCallerException - これが指定されたモジュールであり、このモジュールが少なくとも呼び出し元モジュールに対してパッケージを開いていない場合
        関連項目:
        isOpen(String,Module), AccessibleObject#setAccessible(boolean), MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)
      • addUses

        public Module addUses​(Class<?> service)
        呼び出し側モジュールがこのモジュールである場合、このモジュールを更新して、指定されたサービス型にサービス依存を追加します。 このメソッドは、他のモジュールの代わりにServiceLoaderを呼び出すフレームワーク、またはフレームワークが他のコードによってサービス型への参照を渡すフレームワークで使用するためのものです。 名前のないモジュールまたは自動モジュールで呼び出された場合、このメソッドはノー・オペレーションです。

        このメソッドではresolveAndBindが再実行されることはありません。

        パラメータ:
        service - サービス型
        戻り値:
        このモジュール
        例外:
        IllegalCallerException - これが名前付きモジュールで、呼び出し側モジュールがこのモジュールでない場合
        関連項目:
        canUse(Class), ModuleDescriptor.uses()
      • canUse

        public boolean canUse​(Class<?> service)
        このモジュールが指定されたサービス型にサービス依存するかどうかを示します。 このメソッドは、名前のないモジュールまたは自動モジュールで呼び出されたときに常にtrueを返します。
        パラメータ:
        service - サービス型
        戻り値:
        このモジュールがサービス型stを使用する場合はtrue
        関連項目:
        addUses(Class)
      • getPackages

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

        名前付きモジュールの場合、返されるセットにはモジュール内の各パッケージの要素が含まれます。

        名前のないモジュールの場合、このメソッドは、このモジュール・クラス・ローダーのgetDefinedPackagesメソッドを呼び出して、パッケージ名のセットを返すのと同じです。

        戻り値:
        このモジュール内のパッケージのパッケージ名のセット
      • getAnnotation

        public <T extends Annotation> T getAnnotation​(Class<T> annotationClass)
        存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。 このメソッドは、名前のないモジュールで呼び出されたときにnullを返します。
        定義:
        getAnnotation、インタフェース: AnnotatedElement
        型パラメータ:
        T - 照会し、存在する場合に返す注釈の型。
        パラメータ:
        annotationClass - 注釈型に対応するClassオブジェクト
        戻り値:
        存在する場合は、この要素の指定された注釈型の注釈。そうでない場合はnull
      • getAnnotations

        public Annotation[] getAnnotations()
        この要素に存在する注釈を返します。 この要素に存在する注釈がない場合、戻り値は長さ0の配列です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。 このメソッドは、名前のないモジュールで呼び出されたときに空の配列を返します。
        定義:
        getAnnotations、インタフェース: AnnotatedElement
        戻り値:
        この要素に存在する注釈
      • getDeclaredAnnotations

        public Annotation[] getDeclaredAnnotations()
        この要素に直接存在する注釈を返します。 このメソッドは継承された注釈を無視します。 この要素に直接存在する注釈がない場合、戻り値は長さ0の配列です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。 このメソッドは、名前のないモジュールで呼び出されたときに空の配列を返します。
        定義:
        getDeclaredAnnotations、インタフェース: AnnotatedElement
        戻り値:
        この要素に直接存在する注釈
      • getResourceAsStream

        public InputStream getResourceAsStream​(String name)
                                        throws IOException
        このモジュール内のリソースを読み込むための入力ストリームを返します。 nameパラメータは、リソースを識別する'/'-分離されたパス名です。 Class.getResourceAsStreamと同様に、このメソッドはモジュール・クラス・ローダーfindResource(String,String)メソッドに委譲し、(モジュールが無名の場合はnull)というモジュール名とリソースの名前で呼び出します。 リソース名の先頭にスラッシュがある場合は、委任の前に削除されます。

        名前付きモジュールのリソースはencapsulatedなので、他のモジュールのコードでは見つけることができません。 リソースを見つけるかどうかは、次のように判断されます:

        • リソース名が".class"で終わると、カプセル化されません。
        • 「パッケージ名」は、リソース名から派生したものです。 パッケージ名がモジュール内のpackageの場合、パッケージはopenから少なくとも呼び出し元モジュールまでのときにのみ、このメソッドの呼び出し側がリソースを見つけることができます。 リソースがモジュール内のパッケージ内にない場合、リソースはカプセル化されません。

        上記の場合、リソースの「パッケージ名」は、名前の最後の'/'に先行する文字のサブシーケンスから導出され、次に、サブシーケンスの各'/'文字を'.'に置き換えます。 パッケージ名を派生させるときは先頭のスラッシュは無視されます。 例として、"a/b/c/foo.properties"という名前のリソースのために派生したパッケージ名は"a.b.c"です。 "META-INF"は合法的なパッケージ名ではないため、"META-INF/MANIFEST.MF"という名前のリソース名はカプセル化されません。

        このメソッドは、リソースがこのモジュールにない場合、リソースがカプセル化され、呼び出し側が見つけることができない場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否された場合はnullを返します。

        パラメータ:
        name - リソース名
        戻り値:
        リソースまたはnullを読み取るための入力ストリーム
        例外:
        IOException - 入出力エラーが発生した場合
        関連項目:
        Class.getResourceAsStream(String)
      • toString

        public String toString()
        このモジュールの文字列表現を返します。 名前付きモジュールの場合、文字列は"module"の後にスペース、モジュール名が続きます。 名前のないモジュールの場合は、文字列"unnamed module"の後に空白が続き、次に名前のないモジュールを識別する実装固有の文字列が表示されます。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このモジュールの文字列表現