- 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()
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 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>
TgetAnnotation(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()
このモジュールの文字列表現を返します。-
クラス 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™仮想マシン仕様」のセクション5.4.3で指定されているように、リンケージ・エラーのためにシンボリック・リファレンスを解決しようとする試みが失敗した場合、最初の解決試行の結果としてスローされたのと同じエラーで、。
- パラメータ:
pn
- パッケージ名other
- モジュール- 戻り値:
- このモジュール
- 例外:
IllegalArgumentException
-pn
がnull
の場合、またはこれが名前付きモジュールであり、パッケージ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
-pn
がnull
の場合、またはこれが名前付きモジュールであり、パッケージ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)
- リソース名が"
-
-