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

クラスModule

java.lang.Object
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()
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    addExports​(String pn, Module other)
    呼び出し側モジュールがこのモジュールである場合、このモジュールを更新して、指定されたパッケージを指定されたモジュールにエクスポートします。
    addOpens​(String pn, Module other)
    このモジュールが少なくとも呼び出しモジュールへのパッケージを「オープン」で作成した場合、このモジュールを更新して、指定されたモジュールへのパッケージを開きます。
    addReads​(Module other)
    呼び出し元モジュールがこのモジュールである場合、このモジュールを更新して、指定されたモジュールを読み取ります。
    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
    isOpen​(String pn)
    このモジュールがパッケージを無条件にパッケージを「オープン」している場合は、trueを返します。
    boolean
    isOpen​(String pn, Module other)
    このモジュールが少なくとも与えられたモジュールへのパッケージを「オープン」している場合は、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が名前付きモジュールの場合
      関連項目:
      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 Virtual Machine仕様」5.4.3の項で指定されているように、リンケージ・エラーのためにシンボリック参照を解決しようとする試みが失敗した場合、それ以降の参照の解決は常に、最初の解決試行の結果としてスローされたものと同じエラーで失敗します。
      パラメータ:
      pn - パッケージ名
      other - モジュール
      戻り値:
      このモジュール
      例外:
      IllegalArgumentException - pnnullの場合、またはこれが名前付きモジュールであり、パッケージpnがこのモジュールのパッケージでない場合
      IllegalCallerException - これが名前付きモジュールで、呼び出し側モジュールがこのモジュールでない場合
      Java Virtual Machine仕様を参照してください:
      5.4.3 解決内容
      関連項目:
      isExported(String,Module)
    • 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()
      このモジュール内のパッケージのパッケージ名のセットを返します。

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

      名前のないモジュールの場合、返されるセットには、名前のないモジュール内の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 - 入出力エラーが発生した場合
      関連項目:
      Class.getResourceAsStream(String)
    • toString

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