- すべての実装されたインタフェース:
AnnotatedElement
public final class Module extends Object implements AnnotatedElement
named
またはunnamedのいずれかを表します。
名前付きモジュールにはname
があり、「モジュール層」を作成するためにモジュールのグラフがJava Virtual Machineに定義されると、Java Virtual Machineによって構築されます。
名前のないモジュールには名前がありません。 getUnnamedModule
メソッドを呼び出すことによって得られる、各ClassLoader
の名前のないモジュールがあります。 名前付きモジュールにないすべての型は、定義されているクラス・ローダーの名前のないモジュールのメンバーです。
このクラスで定義されているパラメータまたはメソッドによって返されるパッケージ名は、"java.lang"
など、「Java言語仕様」の6.5.3セクションで定義されているパッケージの完全修飾名です。
特に指定しない限り、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
呼び出し元モジュールがこのモジュールである場合、このモジュールを更新して、指定されたモジュールを読み取ります。 このメソッドは、other
がこのモジュール(すべてのモジュールが自分自身を読む)である場合、このモジュールはノー・オペレーションであり、このモジュールは名前のないモジュール(名前のないモジュールはすべてのモジュールを読み込む)であるか、またはこのモジュールはすでにother
を読み込んでいます。- 実装上のノート:
- このメソッドで追加された「エッジを読み取る」はweakであり、
other
はこのモジュールが強く到達可能なときにGC'edされることを防ぎません。 - パラメータ:
other
- 他のモジュール- 戻り値:
- このモジュール
- 例外:
IllegalCallerException
- これが名前付きモジュールで、呼び出し側モジュールがこのモジュールでない場合- 関連項目:
canRead(java.lang.Module)
-
isExported
このモジュールが与えられたパッケージを少なくとも与えられたモジュールにエクスポートする場合は、true
を返します。このメソッドは、このモジュール内のパッケージが自身にエクスポートされているかどうかをテストするために呼び出されると、
true
を返します。 名前のないモジュールで呼び出されると、常にtrue
を返します。 指定されたモジュールへのopen
であるパッケージは、実行時にそのモジュールにエクスポートされると見なされるので、パッケージがそのモジュールに対して開いている場合、このメソッドはtrue
を返します。このメソッドは、指定されたモジュールがこのモジュールを読み取るかどうかをチェックしません。
- パラメータ:
pn
- パッケージ名other
- 他のモジュール- 戻り値:
true
このモジュールがパッケージを少なくとも指定されたモジュールにエクスポートする場合- 関連項目:
ModuleDescriptor.exports()
,addExports(String,Module)
-
isOpen
このモジュールが少なくとも与えられたモジュールへのパッケージを「オープン」している場合は、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
呼び出し側モジュールがこのモジュールである場合、このモジュールを更新して、指定されたパッケージを指定されたモジュールにエクスポートします。パッケージがすでに指定されたモジュールに(またはopen)にエクスポートされている場合、このメソッドは効果がありません。
- APIのノート:
- 「Java Virtual Machine仕様」の5.4.3の項で指定されているように、リンケージ・エラーのためにシンボリック参照を解決しようとする試みが失敗した場合、参照を解決しようとすると、最初の解決試行の結果としてスローされたのと同じエラーで常に失敗します。
- パラメータ:
pn
- パッケージ名other
- モジュール- 戻り値:
- このモジュール
- 例外:
IllegalArgumentException
-pn
がnull
の場合、またはこれが名前付きモジュールであり、パッケージpn
がこのモジュールのパッケージでない場合IllegalCallerException
- これが名前付きモジュールで、呼び出し側モジュールがこのモジュールでない場合- Java Virtual Machine仕様を参照してください:
-
5.4.3 解決内容
- 関連項目:
isExported(String,Module)
-
addOpens
このモジュールが少なくとも呼び出しモジュールへのパッケージを「オープン」で作成した場合、このモジュールを更新して、指定されたモジュールへのパッケージを開きます。 このメソッドを使用してパッケージを開くと、プライベート・アクセスをサポートする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
呼び出し側モジュールがこのモジュールである場合、このモジュールを更新して、指定されたサービス型にサービス依存を追加します。 このメソッドは、他のモジュールの代わりにServiceLoader
を呼び出すフレームワーク、またはフレームワークが他のコードによってサービス型への参照を渡すフレームワークで使用するためのものです。 名前のないモジュールまたは自動モジュールで呼び出された場合、このメソッドはノー・オペレーションです。このメソッドでは
resolveAndBind
が再実行されることはありません。- パラメータ:
service
- サービス型- 戻り値:
- このモジュール
- 例外:
IllegalCallerException
- これが名前付きモジュールで、呼び出し側モジュールがこのモジュールでない場合- 関連項目:
canUse(Class)
,ModuleDescriptor.uses()
-
canUse
public boolean canUse(Class<?> service)このモジュールが指定されたサービス型にサービス依存するかどうかを示します。 このメソッドは、名前のないモジュールまたは自動モジュールで呼び出されたときに常にtrue
を返します。- パラメータ:
service
- サービス型- 戻り値:
- このモジュールがサービス型
st
を使用する場合はtrue
- 関連項目:
addUses(Class)
-
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"
の後に空白が続き、次に名前のないモジュールを識別する実装固有の文字列が表示されます。
-