- すべての実装されたインタフェース:
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) このモジュールのリソースを読み取るための入力ストリームを返します。boolean
isExported
(String pn) このモジュールが指定されたパッケージを無条件にエクスポートする場合、true
を返します。boolean
isExported
(String pn, Module other) このモジュールが指定されたパッケージを少なくとも指定されたモジュールにエクスポートする場合、true
を返します。boolean
isNamed()
このモジュールが名前付きモジュールである場合は、true
を返します。boolean
Preview.このモジュールが「制限付き」メソッドにアクセスできる場合は、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
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です。プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。このモジュールが「制限付き」メソッドにアクセスできる場合は、true
を返します。- 戻り値:
- このモジュールが「制限付き」メソッドにアクセスできる場合は
true
。 - 導入されたバージョン:
- 20
-
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
public String toString()このモジュールの文字列表現を返します。 名前付きモジュールの場合、表現は文字列"module"
、スペース、モジュール名の順になります。 名前のないモジュールの場合、表現は文字列"unnamed module"
、スペース、および名前のないモジュールを識別する実装固有の文字列です。
-
isNativeAccessEnabled
を使用できます。