- すべてのスーパー・インタフェース:
Accessible
,Comparable<ReferenceType>
,Mirror
,ReferenceType
,Type
ReferenceType
の改良版です。 ObjectReference.referenceType()
によってインタフェース型が返されることは決してありませんが、そのメソッドによって返されるClassType
の実装済みインタフェースのリストに含まれることはあります。 - 導入されたバージョン:
- 1.3
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明このインタフェースを直接実装する、現在準備のできたクラスを取得します。default Value
invokeMethod
(ThreadReference thread, Method method, List<? extends Value> arguments, int options) ターゲットVM内の指定されたstaticMethod
を呼び出します。このインタフェースを直接拡張する、現在準備のできたインタフェースを取得します。このインタフェースにより直接拡張されたインタフェースを取得します。インタフェース com.sun.jdi.Accessibleで宣言されたメソッド
isPackagePrivate, isPrivate, isProtected, isPublic, modifiers
インタフェース java.lang.Comparableで宣言されたメソッド
compareTo
インタフェース com.sun.jdi.Mirrorで宣言されたメソッド
toString, virtualMachine
インタフェース com.sun.jdi.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
-
メソッドの詳細
-
superinterfaces
List<InterfaceType> superinterfaces()このインタフェースにより直接拡張されたインタフェースを取得します。 返されるリストには、このインタフェースが拡張を宣言したインタフェースだけが含まれます。- 戻り値:
- このインタフェースにより拡張されたインタフェースをミラー化する、
InterfaceType
オブジェクトのList。 このようなオブジェクトが存在しない場合、長さゼロのリストを返す。 - 例外:
ClassNotPreparedException
- このクラスがまだ準備されていない場合。
-
subinterfaces
List<InterfaceType> subinterfaces()このインタフェースを直接拡張する、現在準備のできたインタフェースを取得します。 返されるリストには、そのextends節でこのインタフェースを宣言したインタフェースだけが含まれます。- 戻り値:
- このインタフェースを拡張するインタフェースをミラー化する、
InterfaceType
オブジェクトのList。 このようなオブジェクトが存在しない場合、長さゼロのリストを返す。
-
implementors
このインタフェースを直接実装する、現在準備のできたクラスを取得します。 返されるリストには、そのimplements節でこのインタフェースを宣言したクラスだけが含まれます。- 戻り値:
- このインタフェースを実装するクラスをミラー化する、
ClassType
オブジェクトのList。 このようなオブジェクトが存在しない場合、長さゼロのリストを返す。
-
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が切断された場合でも、メソッドの呼出しは続行されます。- パラメータ:
thread
- 呼出しを行うスレッド。method
- 呼び出すMethod
。arguments
- 呼び出されたメソッドにバインドされたValue
引数のリスト。 リストから取得した値は、メソッド・シグニチャに指定されている順序で引数に代入される。options
- 整数ビット・フラグ・オプション。- 戻り値:
- 呼び出されたメソッドの戻り値の
Value
ミラー。 - 例外:
IllegalArgumentException
- メソッドがこのインタフェースのメンバーでない場合、引数リストのサイズがメソッドに対して宣言された引数の数に一致しない場合、またはメソッドがstaticでない、またはstatic初期化子である場合。ClassNotLoadedException
- 引数型が、適切なクラス・ローダーによってロードされていない場合。IncompatibleThreadStateException
- 指定されたスレッドが、イベントによって中断されていない場合。InvocationException
- メソッドの呼出しにより、ターゲットVMで例外が発生した場合。InvalidTypeException
- 引数が次の条件を満たさない場合 -- オブジェクト引数は、この引数型への代入互換性を持たなければなりません。 (これは、囲むクラスのクラス・ローダーによってこの引数型をロードする必要があることを意味する)。 プリミティブ引数は、この引数型への代入互換性を持っているか、情報を失わずにこの引数型に変換できる必要がある。 代入互換性の詳細は、JLSのセクション5.2を参照してください。VMCannotBeModifiedException
- VirtualMachineが読取り専用の場合(VirtualMachine.canBeModified()
を参照)。- 導入されたバージョン:
- 1.8
-