インタフェースInterfaceType
- すべてのスーパー・インタフェース:
Accessible, Comparable<ReferenceType>, Mirror, ReferenceType, Type
ReferenceTypeの改良版です。 ObjectReference.referenceType()によってインタフェース型が返されることは決してありませんが、そのメソッドによって返されるClassTypeの実装済みインタフェースのリストに含まれることはあります。 - 導入されたバージョン:
- 1.3
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明このインタフェースを直接実装する、現在準備のできたクラスを取得します。default ValueinvokeMethod(ThreadReference thread, Method method, List<? extends Value> arguments, int options) ターゲットVM内の指定されたstaticMethodを呼び出します。このインタフェースを直接拡張する、現在準備のできたインタフェースを取得します。このインタフェースにより直接拡張されたインタフェースを取得します。インタフェースAccessibleで宣言されたメソッド
isPackagePrivate, isPrivate, isProtected, isPublic, modifiers修飾子と型メソッド説明booleanこのオブジェクトがpackage private項目をミラー化するかどうかを判定します。booleanこのオブジェクトがprivate項目をミラー化するかどうかを判定します。booleanこのオブジェクトがprotected項目をミラー化するかどうかを判定します。booleanisPublic()このオブジェクトがpublic項目をミラー化するかどうかを判定します。int整数でエンコードされたJavaプログラミング言語修飾子を返します。インタフェースComparableで宣言されたメソッド
compareToインタフェースMirrorで宣言されたメソッド
toString, virtualMachineインタフェースで宣言されたメソッド ReferenceType
allFields, allLineLocations, allLineLocations, allMethods, availableStrata, classLoader, classObject, constantPool, constantPoolCount, defaultStratum, equals, failedToInitialize, fieldByName, fields, genericSignature, getValue, getValues, hashCode, instances, isAbstract, isFinal, isInitialized, isPrepared, isStatic, isVerified, locationsOfLine, locationsOfLine, majorVersion, methods, methodsByName, methodsByName, minorVersion, module, name, nestedTypes, sourceDebugExtension, sourceName, sourceNames, sourcePaths, visibleFields, visibleMethods修飾子と型メソッド説明この型、そのスーパー・クラス、実装インタフェース、およびスーパー・インタフェース、またはそのいずれかで宣言された各Fieldを含むリストを返します。この参照型内の各実行可能ソース行のLocationオブジェクトを含むリストを返します。allLineLocations(String stratum, String sourceName) この参照型内の各実行可能ソース行のLocationオブジェクトを含むリストを返します。この型、そのスーパー・クラス、実装インタフェース、およびスーパー・インタフェース、またはそのいずれかで宣言された各Methodを含むリストを返します。この参照型で利用可能な層を返します。この型に対応するクラスをロードしたクラス・ローダーのオブジェクトを取得します。ターゲットVM内でこの型に対応するクラス・オブジェクトを返します。byte[]「Java仮想マシン仕様」のクラス・ファイル形式の説明に記載されているconstant_pool項目の形式で、定数プールのrawバイト数を返します。int定数プール内のエントリ数に1を加えた値を返します。この参照型のデフォルト層を返します。boolean指定されたObjectとこのReferenceTypeが等しいかどうかを比較します。booleanこのクラスの初期化が失敗したかどうかを判定します。fieldByName(String fieldName) 指定されたあいまいでない名前で、可視Fieldを検索します。fields()この型で宣言された各Fieldを含むリストを返します。存在する場合は、この型のジェネリック・シグニチャを取得します。inthashCode()このObjectReferenceのハッシュ・コード値を返します。instances(long maxInstances) このReferenceTypeのインスタンスを返します。booleanこの型がabstractとして宣言されたかどうかを判定します。booleanisFinal()この型がfinalとして宣言されたかどうかを判定します。booleanこの型が初期化されているかどうかを判定します。booleanこの型が準備されているかどうかを判定します。booleanisStatic()この型がstaticとして宣言されたかどうかを判定します。booleanこの型が検証されているかどうかを判定します。locationsOfLine(int lineNumber) 指定された行番号にマッピングされたすべてのLocationオブジェクトを含むリストを返します。locationsOfLine(String stratum, String sourceName, int lineNumber) 指定された行番号にマッピングされたすべてのLocationオブジェクトを含むリストを返します。int「Java仮想マシン仕様」のクラス・ファイル形式の説明に定義されているように、クラスのメジャー・バージョン番号を返します。methods()この型で直接宣言された各Methodを含むリストを返します。methodsByName(String name) 指定された名前を持つ各可視Methodを含むリストを返します。methodsByName(String name, String signature) 指定された名前とシグニチャを持つ各可視Methodを含むリストを返します。int「Java仮想マシン仕様」のクラス・ファイル形式の説明に定義されているように、クラスのマイナー・バージョン番号を返します。default ModuleReferencemodule()この型に対応するクラスを含むモジュール・オブジェクトを取得します。name()このReferenceTypeオブジェクトの名前を返します。この型内に宣言され、現在仮想マシンにロードされているReferenceTypeオブジェクトを含むリストを返します。この型のソース・デバッグ拡張機能を取得します。この型の宣言に対応するソースの識別名を取得します。sourceNames(String stratum) この型の宣言に対応するすべてのソースの識別名を取得します。sourcePaths(String stratum) この型の宣言に対応するすべてのソースのパスを取得します。この型内の非表示でなくあいまいでない各Fieldを含むリストを返します。この型によって宣言された、またはこの型に継承された各Methodを含むリストを返します。
-
メソッドの詳細
-
superinterfaces
List<InterfaceType> superinterfaces()このインタフェースにより直接拡張されたインタフェースを取得します。 返されるリストには、このインタフェースが拡張を宣言したインタフェースだけが含まれます。- 戻り値:
- このインタフェースにより拡張されたインタフェースをミラー化する、
InterfaceTypeオブジェクトのList。 このようなオブジェクトが存在しない場合、長さゼロのリストを返す。 - スロー:
ClassNotPreparedException- このクラスがまだ準備されていない場合。
-
subinterfaces
List<InterfaceType> subinterfaces()このインタフェースを直接拡張する、現在準備のできたインタフェースを取得します。 返されるリストには、そのextends節でこのインタフェースを宣言したインタフェースだけが含まれます。- 戻り値:
- このインタフェースを拡張するインタフェースをミラー化する、
InterfaceTypeオブジェクトのList。 このようなオブジェクトが存在しない場合、長さゼロのリストを返す。
-
implementors
-
invokeMethod
default Value invokeMethod(ThreadReference thread, Method method, List<? extends Value> arguments, int options) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException, InvocationException ターゲットVM内の指定されたstaticMethodを呼び出します。 指定するメソッドは、このインタフェース内で定義する必要があります。 このメソッドにはstaticメソッドを指定できますが、static初期化子を指定することはできません。メソッド呼出しは、指定されたスレッドで実行されます。 指定されたスレッドがそのスレッド内で発生したイベントにより中断される場合にのみ、メソッドの呼出しを行います。 ターゲットVMが
VirtualMachine.suspend()によって中断された場合、または指定されたスレッドがThreadReference.suspend()によって中断された場合、メソッドの呼出しはサポートされません。指定されたメソッドは、指定された引数リスト内の引数を使用して呼び出されます。 メソッドの呼出しは、同期をとられます。呼び出されたメソッドがターゲットVMで復帰するまで、このメソッドは復帰しません。 呼び出されたメソッドが例外をスローする場合、このメソッドはスローされた例外オブジェクトに対するミラーを含む
InvocationExceptionをスローします。オブジェクト引数は、この引数型への代入互換性を持たなければいけません(これは、この引数型は、囲むクラスのクラス・ローダーによってロードする必要があることを意味する)。 プリミティブ引数は、この引数型への代入互換性を持っているか、情報を失わずにこの引数型に変換できる必要がある。 呼び出されているメソッドが引数の可変数を受け取る場合、最後の引数型が特定の要素型の配列になります。 一致する位置にある引数は、省略される(つまりnullとなる)可能性や、あるいは、同じ要素型の配列になる(つまり、同じ型のほかの引数の任意の数が続く要素型の引数となる)可能性があります。 引数が省略される場合は、配列の長さがゼロである要素型が渡されます。 要素型はプリミティブ型である可能性もあります。 自動ボックス化はサポートされていません。 割当ての互換性の詳細は、「Java言語仕様」の5.2に関する項を参照してください。
デフォルトでは、ターゲットVM内のすべてのスレッドがメソッドの呼出し中に再開されます(イベントや
VirtualMachine.suspend()またはThreadReference.suspend()によって以前に中断されたスレッドの場合)。 これは、呼び出されたメソッドで必要とされるリソース(モニターなど)を所有しているスレッドがある場合に発生するデッドロックを防ぐために行われます。 ただし、この暗黙の再開は、ThreadReference.resume()とまったく同様に行われるため、スレッドの中断カウントが1を超える場合は、呼出し中にスレッドが再開されません。このため、デッドロックが発生する可能性があることに留意してください。 デフォルトでは、ターゲットVM内のすべてのスレッドは、呼出しの完了時に中断します(呼出し前のスレッドの状態とは無関係)。 ブレークポイントまたはほかのイベントが、呼出し中に発生する可能性があります。 この場合、前述したデッドロックが発生することがあります。 また、invokeMethodがクライアントのイベント・ハンドラ・スレッドから呼び出された場合も、デッドロックが発生することがあります。 この場合、このスレッドはinvokeMethodが完了するまで待機するので、新規イベントの発生に伴うEventSetの読取りを行いません。 この新規EventSetがSUSPEND_ALLである場合、EventSetが再開されないので、デッドロックが発生します。 この状況を避けるには、invokeMethodの実行前にすべてのEventRequestを無効にするか、invokeMethodをクライアントのイベント・ハンドラ・スレッドから呼び出さないようにしてください。呼出し中の他のスレッドの再開は、
options引数にClassType.INVOKE_SINGLE_THREADEDビット・フラグを指定することで防止できます。ただし、前述のデッドロックに対する保護やリカバリは行われないため、このオプションは慎重に使用してください。 指定されたスレッドのみが再開されます(前述したすべてのスレッドの場合と同様)。 シングル・スレッド呼出しが完了すると、呼出し元スレッドは再び中断されます。 シングル・スレッド呼出し中に開始されたすべてのスレッドは、呼出し完了時にも中断されません。呼出し中に
VirtualMachine.dispose()などによってターゲットVMが切断された場合でも、メソッドの呼出しは続行されます。- APIのノート:
- 「仮想スレッド」は、通常、オペレーティング・システムではなくJavaランタイムによってスケジュールされるユーザー・モード・スレッドです。 そのため、
ClassType.INVOKE_SINGLE_THREADEDオプションによってデッドロックが発生する可能性がある仮想スレッドでは、さらに多くのケースが考えられます。 たとえば、ターゲットVM内のすべてのスレッドを一時停止すると、仮想スレッドのタイマー・メカニズムをサポートするスレッドが一時停止されるため、Thread.sleep(long)などのメソッドがデッドロックする可能性があります。 - パラメータ:
thread- 呼出しを行うスレッド。method- 呼び出すMethod。arguments- 呼び出されたメソッドにバインドされたValue引数のリスト。 リストから取得した値は、メソッド・シグニチャに指定されている順序で引数に代入される。options- 整数ビット・フラグ・オプション。- 戻り値:
- 呼び出されたメソッドの戻り値の
Valueミラー。 - スロー:
IllegalArgumentException- メソッドがこのインタフェースのメンバーでない場合、引数リストのサイズがメソッドに対して宣言された引数の数に一致しない場合、またはメソッドがstaticでない、またはstatic初期化子である場合。ClassNotLoadedException- 引数型が、適切なクラス・ローダーによってロードされていない場合。IncompatibleThreadStateException- 指定されたスレッドが、イベントによって中断されていない場合。InvocationException- メソッドの呼出しにより、ターゲットVMで例外が発生した場合。InvalidTypeException- 引数が次の条件を満たさない場合 -- オブジェクト引数は、この引数型への代入互換性を持たなければなりません。 (これは、囲むクラスのクラス・ローダーによってこの引数型をロードする必要があることを意味する)。 プリミティブ引数は、この引数型への代入互換性を持っているか、情報を失わずにこの引数型に変換できる必要がある。 代入互換性の詳細は、JLSのセクション5.2を参照してください。VMCannotBeModifiedException- VirtualMachineが読取り専用の場合(VirtualMachine.canBeModified()を参照)。- 導入されたバージョン:
- 1.8
-