クラスModule
- すべての実装されたインタフェース:
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) 呼び出し元のモジュールがこのモジュールである場合は、このモジュールを更新して、指定されたパッケージを指定されたモジュールにエクスポートします。このモジュールに、少なくとも呼出し元モジュールへのパッケージopenedがある場合は、このモジュールを更新して、指定されたモジュールにパッケージを開きます。呼び出し元のモジュールがこのモジュールである場合は、このモジュールを更新して、指定されたモジュールを読み取ります。呼出し元のモジュールがこのモジュールである場合、このモジュールを更新して、指定されたサービス・タイプにサービス依存を追加します。booleanこのモジュールが指定されたモジュールを読み取るかどうかを示します。booleanこのモジュールに、指定されたサービス・タイプへのサービス依存があるかどうかを示します。<T extends Annotation>
TgetAnnotation(Class<T> annotationClass) 存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。この要素に存在する注釈を返します。このモジュールのClassLoaderを返します。この要素に直接存在する注釈を返します。このモジュールのモジュール記述子を返すか、このモジュールが名前のないモジュールの場合はnullを返します。getLayer()このモジュールを含むモジュール・レイヤーを返すか、このモジュールがモジュール・レイヤーにない場合はnullを返します。getName()モジュール名を返すか、このモジュールが名前のないモジュールの場合はnullを返します。このモジュール内のパッケージのパッケージ名のセットを返します。getResourceAsStream(String name) このモジュールのリソースを読み取るための入力ストリームを返します。booleanisExported(String pn) このモジュールが指定されたパッケージを無条件にエクスポートする場合、trueを返します。booleanisExported(String pn, Module other) このモジュールが指定されたパッケージを少なくとも指定されたモジュールにエクスポートする場合、trueを返します。booleanisNamed()このモジュールが名前付きモジュールである場合は、trueを返します。booleanこのモジュールが「制限付き」メソッドにアクセスできる場合は、trueを返します。booleanこのモジュールに無条件にパッケージopenedがある場合、trueを返します。booleanこのモジュールに、少なくとも指定されたモジュールへのパッケージopenedがある場合、trueを返します。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が名前付きモジュールの場合- Java言語仕様を参照してください:
-
7.7.5 名前なしモジュール
- 関連項目:
-
getName
-
getClassLoader
public ClassLoader getClassLoader()このモジュールのClassLoaderを返します。セキュリティ・マネージャが存在する場合、コール元がクラス・ローダーへのアクセスを許可されていることを確認するために
RuntimePermission("getClassLoader")権限で最初にコールされた場合は、そのcheckPermissionメソッドを使用します。- 戻り値:
- このモジュールのクラス・ローダー
- 例外:
SecurityException- セキュリティ・マネージャによって拒否された場合
-
getDescriptor
public ModuleDescriptor getDescriptor()このモジュールのモジュール記述子を返すか、このモジュールが名前のないモジュールの場合はnullを返します。- 戻り値:
- このモジュールのモジュール記述子
-
getLayer
public ModuleLayer getLayer()このモジュールを含むモジュール・レイヤーを返すか、このモジュールがモジュール・レイヤーにない場合はnullを返します。 モジュール・レイヤーには名前付きモジュールが含まれているため、このメソッドは、名前なしモジュールで呼び出されると常にnullを返します。「動的モジュール」は、実行時に生成される名前付きモジュールです。 動的モジュールは、モジュール・レイヤー内にある場合とそうでない場合があります。
- 戻り値:
- このモジュールを含むモジュール・レイヤー
- 関連項目:
-
isNativeAccessEnabled
public boolean isNativeAccessEnabled()このモジュールが「制限付き」メソッドにアクセスできる場合は、trueを返します。- 戻り値:
- このモジュールが「制限付き」メソッドにアクセスできる場合は
true。 - 導入されたバージョン:
- 22
-
canRead
public boolean canRead(Module other) このモジュールが指定されたモジュールを読み取るかどうかを示します。 このメソッドは、このモジュールが自身を読み取るかどうかをテストするために呼び出された場合、trueを返します。 また、名前のないモジュール(名前のないモジュールはすべてのモジュールを読み込む)で呼び出された場合は、trueを返します。- パラメータ:
other- 他のモジュール- 戻り値:
trueこのモジュールがotherを読み取る場合- 関連項目:
-
addReads
呼び出し元のモジュールがこのモジュールである場合は、このモジュールを更新して、指定されたモジュールを読み取ります。 このメソッドは、otherがこのモジュール(すべてのモジュールが自分自身を読む)である場合、このモジュールはノー・オペレーションであり、このモジュールは名前のないモジュール(名前のないモジュールはすべてのモジュールを読み込む)であるか、またはこのモジュールはすでにotherを読み込んでいます。- 実装上のノート:
- このメソッドによって追加された「エッジを読み取る」はweakであり、このモジュールに厳密にアクセス可能な場合、
otherがGCされるのを防ぐことはできません。 - パラメータ:
other- 他のモジュール- 戻り値:
- このモジュール
- 例外:
IllegalCallerException- これが名前付きモジュールで、呼び出し元のモジュールがこのモジュールでない場合- 関連項目:
-
isExported
このモジュールが指定されたパッケージを少なくとも指定されたモジュールにエクスポートする場合、trueを返します。このメソッドは、このモジュール内のパッケージが自身にエクスポートされるかどうかをテストするために呼び出された場合、
trueを返します。 名前のないモジュールで呼び出されると、常にtrueが返されます。 指定されたモジュールにopenのパッケージは、実行時にそのモジュールにエクスポートされるとみなされるため、このメソッドは、パッケージが指定されたモジュールにオープンされている場合はtrueを返します。このメソッドは、指定されたモジュールがこのモジュールを読み取るかどうかをチェックしません。
- パラメータ:
pn- パッケージ名other- 他のモジュール- 戻り値:
trueこのモジュールがパッケージを少なくとも指定されたモジュールにエクスポートする場合- 関連項目:
-
isOpen
このモジュールに、少なくとも指定されたモジュールへのパッケージopenedがある場合、trueを返します。このメソッドは、このモジュール内のパッケージが自身に対して開いているかどうかをテストするために呼び出された場合、
trueを返します。 モジュール内のパッケージを含むopenモジュールで呼び出されると、trueが返されます。 名前のないモジュールで呼び出されると、常にtrueが返されます。このメソッドは、指定されたモジュールがこのモジュールを読み取るかどうかをチェックしません。
- APIのノート:
- パッケージ
pをモジュールMにオープンすると、Mのコードでパッケージのすべてのタイプに対して「深い反射」を実行できます。 さらに、Mがこのモジュールを読み取ると、パッケージpでdefine 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がこのモジュールを読み取ると、パッケージpでdefine classesを許可されているLookupオブジェクトを取得できます。 - パラメータ:
pn- パッケージ名- 戻り値:
trueこのモジュールがパッケージを無条件でopenedしている場合- 関連項目:
-
addExports
呼び出し元のモジュールがこのモジュールである場合は、このモジュールを更新して、指定されたパッケージを指定されたモジュールにエクスポートします。このメソッドは、パッケージが指定されたモジュールにすでに(またはopen)をエクスポートしている場合には効果がありません。
- APIのノート:
- 「Java Virtual Machine仕様」の5.4.3の項で指定されているように、リンケージ・エラーのためにシンボリック参照を解決しようとする試みが失敗した場合、それ以降の参照の解決は常に、最初の解決試行の結果としてスローされたものと同じエラーで失敗します。
- パラメータ:
pn- パッケージ名other- モジュール- 戻り値:
- このモジュール
- 例外:
IllegalArgumentException-pnがnullの場合、またはこれが名前付きモジュールであり、パッケージpnがこのモジュールのパッケージでない場合IllegalCallerException- これが名前付きモジュールで、呼び出し元のモジュールがこのモジュールでない場合- Java Virtual Machine仕様を参照してください:
-
5.4.3 解決方法
- 関連項目:
-
addOpens
このモジュールに、少なくとも呼出し元モジュールへのパッケージopenedがある場合は、このモジュールを更新して、指定されたモジュールにパッケージを開きます。 このメソッドを使用してパッケージを開くと、プライベート・アクセスをサポートするAPI、またはデフォルトのJava言語アクセス制御チェックをバイパスまたは抑制する方法を使用するときに、パッケージ内のすべてのタイプ、およびすべてのメンバー(パブリック・タイプとそのパブリック・メンバーのみではない)が、指定されたモジュールによって反映されます。このメソッドは、パッケージが指定されたモジュールに対してすでにopenである場合には効果がありません。
- APIのノート:
- このメソッドは、「消費者モジュール」が修飾されたopenを使用して「APIモジュール」へのパッケージを開くが、コンシューマ・モジュール内のクラスのメンバーへのリフレクティブ・アクセスが別のモジュールのコードに委任される場合に使用できます。 APIモジュールのコードは、このメソッドを使用して、コンシューマ・モジュールのパッケージを他のモジュールにオープンできます。
- パラメータ:
pn- パッケージ名other- モジュール- 戻り値:
- このモジュール
- 例外:
IllegalArgumentException-pnがnullの場合、またはこれが名前付きモジュールであり、パッケージpnがこのモジュールのパッケージでない場合IllegalCallerException- これが名前付きモジュールで、このモジュールが少なくとも呼び出し元のモジュールにパッケージを開いていない場合- 関連項目:
-
addUses
呼出し元のモジュールがこのモジュールである場合、このモジュールを更新して、指定されたサービス・タイプにサービス依存を追加します。 このメソッドは、他のモジュールのかわりにServiceLoaderを呼び出すフレームワーク、またはフレームワークが他のコードによってサービス・タイプへの参照を渡されるフレームワークで使用することを目的としています。 このメソッドは、名前のないモジュールまたは自動モジュールで呼び出された場合、no-opです。このメソッドでは、
resolveAndBindは再実行されません。- パラメータ:
service- サービス型- 戻り値:
- このモジュール
- 例外:
IllegalCallerException- これが名前付きモジュールで、呼び出し元のモジュールがこのモジュールでない場合- 関連項目:
-
canUse
public boolean canUse(Class<?> service) このモジュールに、指定されたサービス・タイプへのサービス依存があるかどうかを示します。 このメソッドは、名前のないモジュールまたは自動モジュールで呼び出されると、常にtrueを返します。- パラメータ:
service- サービス型- 戻り値:
- このモジュールがサービス型
stを使用する場合はtrue - 関連項目:
-
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
-