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

クラスModule

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

public final class Module extends Object implements AnnotatedElement
ランタイム・モジュール(namedまたは名前なし)を表します。

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

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

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

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

Java言語仕様を参照してください:
7.7 モジュール宣言
導入されたバージョン:
9
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    addExports(String pn, Module other)
    呼び出し元のモジュールがこのモジュールである場合は、このモジュールを更新して、指定されたパッケージを指定されたモジュールにエクスポートします。
    addOpens(String pn, Module other)
    このモジュールに、少なくとも呼出し元モジュールへのパッケージopenedがある場合は、このモジュールを更新して、指定されたモジュールにパッケージを開きます。
    呼び出し元のモジュールがこのモジュールである場合は、このモジュールを更新して、指定されたモジュールを読み取ります。
    addUses(Class<?> service)
    呼出し元のモジュールがこのモジュールである場合、このモジュールを更新して、指定されたサービス・タイプにサービス依存を追加します。
    boolean
    canRead(Module other)
    このモジュールが指定されたモジュールを読み取るかどうかを示します。
    boolean
    canUse(Class<?> service)
    このモジュールに、指定されたサービス・タイプへのサービス依存があるかどうかを示します。
    <T extends Annotation>
    T
    getAnnotation(Class<T> annotationClass)
    存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。
    この要素に存在する注釈を返します。
    このモジュールのClassLoaderを返します。
    この要素に直接存在する注釈を返します。
    このモジュールのモジュール記述子を返すか、このモジュールが名前のないモジュールの場合はnullを返します。
    このモジュールを含むモジュール・レイヤーを返すか、このモジュールがモジュール・レイヤーにない場合はnullを返します。
    モジュール名を返すか、このモジュールが名前のないモジュールの場合はnullを返します。
    このモジュール内のパッケージのパッケージ名のセットを返します。
    このモジュールのリソースを読み取るための入力ストリームを返します。
    boolean
    このモジュールが指定されたパッケージを無条件にエクスポートする場合、trueを返します。
    boolean
    isExported(String pn, Module other)
    このモジュールが指定されたパッケージを少なくとも指定されたモジュールにエクスポートする場合、trueを返します。
    boolean
    このモジュールが名前付きモジュールである場合は、trueを返します。
    boolean
    Preview.
    このモジュールが制限付きメソッドにアクセスできる場合は、trueを返します。
    boolean
    このモジュールに無条件にパッケージopenedがある場合、trueを返します。
    boolean
    isOpen(String pn, Module other)
    このモジュールに、少なくとも指定されたモジュールへのパッケージopenedがある場合、trueを返します。
    このモジュールの文字列表現を返します。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    インタフェースjava.lang.reflect.AnnotatedElementで宣言されたメソッド

    getAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent
  • メソッドの詳細

    • isNamed

      public boolean isNamed()
      このモジュールが名前付きモジュールである場合は、trueを返します。
      戻り値:
      trueが名前付きモジュールの場合
      Java言語仕様を参照してください:
      7.7.5 名前なしモジュール
      関連項目:
    • 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を返します。

      「動的モジュール」は、実行時に生成される名前付きモジュールです。 動的モジュールは、モジュール・レイヤー内にある場合とそうでない場合があります。

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

      public boolean isNativeAccessEnabled()
      isNativeAccessEnabledは、JavaプラットフォームのプレビューAPIです。
      プレビュー機能が有効な場合のみ、プログラムでisNativeAccessEnabledを使用できます。
      プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
      このモジュールが制限付きメソッドにアクセスできる場合は、trueを返します。
      戻り値:
      このモジュールが「制限付き」メソッドにアクセスできる場合はtrue
      導入されたバージョン:
      20
    • canRead

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

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

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

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

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

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

      public boolean isOpen(String pn, Module other)
      このモジュールに、少なくとも指定されたモジュールへのパッケージopenedがある場合、trueを返します。

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

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

      APIのノート:
      パッケージpをモジュールMにオープンすると、Mのコードでパッケージのすべてのタイプに対して「深い反射」を実行できます。 さらに、Mがこのモジュールを読み取ると、パッケージpdefine classesを許可されているLookupオブジェクトを取得できます。
      パラメータ:
      pn - パッケージ名
      other - 他のモジュール
      戻り値:
      trueこのモジュールがパッケージを少なくとも指定されたモジュールにopenedしている場合
      関連項目:
    • isExported

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

      このメソッドは、名前のないモジュールで呼び出されると、常にtrueを返します。 無条件にopenedのパッケージは、実行時に無条件にエクスポートされたとみなされるため、パッケージが無条件にオープンされた場合、このメソッドはtrueを返します。

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

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

      public boolean isOpen(String pn)
      このモジュールに無条件にパッケージopenedがある場合、trueを返します。

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

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

      APIのノート:
      パッケージpをモジュールMにオープンすると、Mのコードでパッケージのすべてのタイプに対して「深い反射」を実行できます。 さらに、Mがこのモジュールを読み取ると、パッケージpdefine classesを許可されているLookupオブジェクトを取得できます。
      パラメータ:
      pn - パッケージ名
      戻り値:
      trueこのモジュールがパッケージを無条件でopenedしている場合
      関連項目:
    • addExports

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

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

      APIのノート:
      「Java Virtual Machine仕様」5.4.3の項で指定されているように、リンケージ・エラーのためにシンボリック参照を解決しようとする試みが失敗した場合、それ以降の参照の解決は常に、最初の解決試行の結果としてスローされたものと同じエラーで失敗します。
      パラメータ:
      pn - パッケージ名
      other - モジュール
      戻り値:
      このモジュール
      例外:
      IllegalArgumentException - pnnullの場合、またはこれが名前付きモジュールであり、パッケージpnがこのモジュールのパッケージでない場合
      IllegalCallerException - これが名前付きモジュールで、呼び出し元のモジュールがこのモジュールでない場合
      Java Virtual Machine仕様を参照してください:
      5.4.3 解決方法
      関連項目:
    • addOpens

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

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

      APIのノート:
      このメソッドは、「消費者モジュール」が修飾されたopenを使用して「APIモジュール」へのパッケージを開くが、コンシューマ・モジュール内のクラスのメンバーへのリフレクティブ・アクセスが別のモジュールのコードに委任される場合に使用できます。 APIモジュールのコードは、このメソッドを使用して、コンシューマ・モジュールのパッケージを他のモジュールにオープンできます。
      パラメータ:
      pn - パッケージ名
      other - モジュール
      戻り値:
      このモジュール
      例外:
      IllegalArgumentException - pnnullの場合、またはこれが名前付きモジュールであり、パッケージpnがこのモジュールのパッケージでない場合
      IllegalCallerException - これが名前付きモジュールで、このモジュールが少なくとも呼び出し元のモジュールにパッケージを開いていない場合
      関連項目:
    • addUses

      public Module addUses(Class<?> service)
      呼出し元のモジュールがこのモジュールである場合、このモジュールを更新して、指定されたサービス・タイプにサービス依存を追加します。 このメソッドは、他のモジュールのかわりにServiceLoaderを呼び出すフレームワーク、またはフレームワークが他のコードによってサービス・タイプへの参照を渡されるフレームワークで使用することを目的としています。 このメソッドは、名前のないモジュールまたは自動モジュールで呼び出された場合、no-opです。

      このメソッドでは、resolveAndBindは再実行されません。

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

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

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

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

      名前のないモジュールの場合、返されるセットには、名前のないモジュール内のhas been definedが持つ各パッケージの要素が含まれます。

      戻り値:
      このモジュール内のパッケージのパッケージ名のセット
    • 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 - 入出力エラーが発生した場合
      関連項目:
    • toString

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