|
Java Debug Interface | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
ターゲット VM 内のクラスのミラーです。ClassType は、Java 言語仕様で定義されている意味での真のクラス (インタフェースでも、配列型でもない) に当てはまる ReferenceType の改良版です。この種のクラスのインスタンスをミラー化するすべての ObjectReference は、その型として ClassType を保持します。
ObjectReference| フィールドの概要 | |
static int |
INVOKE_SINGLE_THREADED
呼び出し側のスレッドだけを再開してメソッドの呼び出しを実行します。 |
| メソッドの概要 | |
List |
allInterfaces()
このクラスにより直接的または間接的に実装されたインタフェースを取得します。 |
Method |
concreteMethodByName(String name,
String signature)
指定された名前およびシグニチャーを持つこのクラスから認識可能な、単一の非 abstract Method を返します。 |
List |
interfaces()
このクラスにより直接実装されたインタフェースを取得します。 |
Value |
invokeMethod(ThreadReference thread,
Method method,
List arguments,
int options)
ターゲット VM 内の指定された static Method を呼び出します。 |
ObjectReference |
newInstance(ThreadReference thread,
Method method,
List arguments,
int options)
ターゲット VM 内の指定されたコンストラクタ Method を使って、この型の新規インスタンスを生成します。 |
void |
setValue(Field field,
Value value)
値を static フィールドに代入します。 |
List |
subclasses()
現在ロードされている、このクラスの直接のサブクラスを取得します。 |
ClassType |
superclass()
このクラスのスーパークラスを取得します。 |
| インタフェース com.sun.jdi.Type から継承したメソッド |
signature |
| インタフェース com.sun.jdi.Mirror から継承したメソッド |
toString, virtualMachine |
| インタフェース java.lang.Comparable から継承したメソッド |
compareTo |
| インタフェース com.sun.jdi.Accessible から継承したメソッド |
isPackagePrivate, isPrivate, isProtected, isPublic, modifiers |
| フィールドの詳細 |
public static final int INVOKE_SINGLE_THREADED
| メソッドの詳細 |
public ClassType superclass()
ClassType。このようなクラスが存在しない場合は null を返すpublic List interfaces()
InterfaceType オブジェクトのリスト。このようなオブジェクトが存在しない場合、長さゼロのリストを返す
ClassNotPreparedException - このクラスがまだ準備されていない場合public List allInterfaces()
interfaces() により返されるインタフェースは、すべてのスーパーインタフェースと同様に返されます。
InterfaceType オブジェクトのリスト。このようなオブジェクトが存在しない場合、長さゼロのリストを返す
ClassNotPreparedException - このクラスがまだ準備されていない場合public List subclasses()
ClassType オブジェクトのリスト。このようなクラスが存在しない場合、このメソッドは長さゼロのリストを返す
public void setValue(Field field,
Value value)
throws InvalidTypeException,
ClassNotLoadedException
Field は、この ObjectReference に対して有効でなければなりません。つまり、このオブジェクトからフィールドの型への、ワイド型参照変換が行われる必要があります。フィールドは final であってはなりません。
オブジェクトの値は、このフィールドの型への代入互換性を持たなければなりません (これは、このフィールド型は、囲むクラスのクラスローダによってロードする必要があることを意味する)。プリミティブ値は、このフィールドの型への代入互換性を持つか、情報を失わずにこのフィールドの型に変換できる必要があります。代入互換性の詳細は、Java 言語仕様のセクション 5.2 を参照してください。
field - 設定するフィールドvalue - 代入される値
IllegalArgumentException - フィールドが static ではない場合、フィールドが final である場合、またはフィールドがこのクラス内に存在しない場合
ClassNotLoadedException - フィールドの型が、適切なクラスローダによってロードされていない場合
InvalidTypeException - 値の型が宣言されたフィールド型と一致しない場合
public Value invokeMethod(ThreadReference thread,
Method method,
List arguments,
int options)
throws InvalidTypeException,
ClassNotLoadedException,
IncompatibleThreadStateException,
InvocationException
Method を呼び出します。指定するメソッドは、このクラス内またはスーパークラス内で定義できます。このメソッドには static メソッドを指定できますが、static 初期化子を指定することはできません。新規オブジェクトの生成およびそのコンストラクタの実行には、newInstance(com.sun.jdi.ThreadReference, com.sun.jdi.Method, java.util.List, int) を使用します。
メソッドの呼び出しは、指定されたスレッド内で行われます。指定されたスレッドがそのスレッド内で発生したイベントにより中断される場合にのみ、メソッドの呼び出しを行います。ターゲット VM が VirtualMachine.suspend() を使って中断された場合、または指定されたスレッドが ThreadReference.suspend() を使って中断された場合、メソッドの呼び出しはサポートされません
指定されたメソッドは、指定された引数リスト内の引数を使って呼び出されます。メソッドの呼び出しは、同期をとられます。呼び出されたメソッドがターゲット VM で復帰するまで、このメソッドは復帰しません。 呼び出されたメソッドの戻り値の型が void 以外の型である場合、戻り値のミラーはこのメソッドによって返されます。それ以外の場合、null が返されます。呼び出されたメソッドが例外をスローする場合、このメソッドは、スローされた例外オブジェクトに対するミラーを含む InvocationException をスローします。
オブジェクト引数は、この引数型への代入互換性を持たなければなりません (これは、この引数型は、囲むクラスのクラスローダによってロードする必要があることを意味する)。プリミティブ引数は、この引数型への代入互換性を持つか、情報を失わずにこの引数型に変換できる必要があります。代入互換性の詳細は、Java 言語仕様のセクション 5.2 を参照してください。
デフォルトでは、ターゲット VM 内のすべてのスレッドは、そのスレッドがイベントまたは VirtualMachine.suspend() か ThreadReference.suspend() によって以前に中断された場合、メソッドの呼び出し中に再開されます。 これは、呼び出されたメソッドが必要とするモニターをいずれかのスレッドが所有する場合に発生するデッドロックを回避するために行われます。呼び出し中にブレークポイントまたは他のイベントが発生する可能性があります。 ただし、この暗黙の再開は、ThreadReference.resume() と同じように行われるため、スレッドの中断カウントが 1 を超える場合には、呼び出しの間、スレッドは中断状態になることに留意してください。デフォルトでは、呼び出しが完了すると、ターゲット VM 内のすべてのスレッドは、呼び出し前の状態に関係なく中断されます。
呼び出し中に他のスレッドが再開されるのを防止するには、options 引数に INVOKE_SINGLE_THREADED ビットフラグを指定します。ただし、このオプションでは、デッドロックを回避したり、デッドロックから回復することはできないので、慎重に使用する必要があります。指定されたスレッドだけが再開されます (すべてのスレッドは再開されない)。単一スレッド呼び出しの完了時には、呼び出し側 のスレッドは再度中断されます。単一スレッド呼び出し中に開始されたスレッドは、 その単一スレッド呼び出しの完了時には中断されません。
呼び出し中にターゲット VM が切断された (たとえば、VirtualMachine.dispose() によって) 場合でも、メソッドの呼び出しは続行されます。
thread - 呼び出しを行うスレッドmethod - 呼び出す Methodarguments - 呼び出されるメソッドにバインドされた Value 引数のリスト。リストから取得した値は、メソッドシグニチャーに指定されている順序で引数に代入されるoptions - 整数ビットフラグオプション
Value のミラー
IllegalArgumentException - メソッドがこのクラスまたはスーパークラスのメンバではない場合、引数リストのサイズがメソッドに対して宣言された引数の数に一致しない場合、またはメソッドが初期化子、コンストラクタ、static 初期化子のいずれかである場合
{@link - InvalidTypeException} 対応するメソッドの引数型に代入できない引数が引数リストにある場合
ClassNotLoadedException - 引数型が、適切なクラスローダによってロードされていない場合
IncompatibleThreadStateException - 指定されたスレッドが、イベントによって中断されていない場合
InvocationException - メソッドの呼び出しにより、ターゲット VM で例外が発生した場合
InvalidTypeException - 引数が以下の条件を満たさない場合 -- オブジェクト引数は、この引数型への代入互換性を持たなければなりません (これは、この引数型は、囲むクラスのクラスローダによってロードする必要があることを意味する)。プリミティブ引数は、この引数型への代入互換性を持っているか、情報を失わずにこの引数型に変換できる必要があります。代入互換性の詳細は、Java 言語仕様のセクション 5.2 を参照してください
public ObjectReference newInstance(ThreadReference thread,
Method method,
List arguments,
int options)
throws InvalidTypeException,
ClassNotLoadedException,
IncompatibleThreadStateException,
InvocationException
Method を使って、この型の新規インスタンスを生成します。指定するコンストラクタは、このクラス内で定義する必要があります。
指定されたスレッド内でインスタンスの生成が行われます。指定されたスレッドがそのスレッド内で発生したイベントによって中断された場合にだけ、インスタンスの生成は行われます。ターゲット VM が VirtualMachine.suspend() により中断された場合、または指定されたスレッドが ThreadReference.suspend() により中断された場合、インスタンスの生成はサポートされません。
指定されたコンストラクタは、指定された引数リスト内の引数を使って呼び出されます。呼び出しは同期をとられます。コンストラクタがターゲット VM 内で復帰するまで、このメソッドは復帰しません。呼び出されたメソッドが例外をスローする場合、このメソッドはスローされた例外オブジェクトに対するミラーを含む InvocationException をスローします。
オブジェクト引数は、この引数型への代入互換性を持たなければなりません (これは、この引数型は、囲むクラスのクラスローダによってロードする必要があることを意味する)。プリミティブ引数は、この引数型への代入互換性を持つか、情報を失わずにこの引数型に変換できる必要があります。代入互換性の詳細は、Java 言語仕様のセクション 5.2 を参照してください。
デフォルトでは、ターゲット VM 内のすべてのスレッドは、そのスレッドがイベントまたは VirtualMachine.suspend() か ThreadReference.suspend() によって以前に中断された場合、メソッドの呼び出し中に再開されます。 これは、呼び出されたメソッドが必要とするモニターをいずれかのスレッドが所有する場合に発生するデッドロックを回避するために行われます。呼び出し中にブレークポイントまたは他のイベントが発生する可能性があります。 ただし、この暗黙の再開は、ThreadReference.resume() と同じように行われるため、スレッドの中断カウントが 1 を超える場合には、呼び出しの間、スレッドは中断状態になることに留意してください。デフォルトでは、呼び出しが完了すると、ターゲット VM 内のすべてのスレッドは、呼び出し前の状態に関係なく中断されます。
呼び出し中に他のスレッドが再開されるのを防止するには、options 引数に INVOKE_SINGLE_THREADED ビットフラグを指定します。ただし、このオプションでは、デッドロックを回避したり、デッドロックから回復することはできないので、慎重に使用する必要があります。指定されたスレッドだけが再開されます (すべてのスレッドは再開されない)。単一スレッド呼び出しの完了時には、呼び出し側 のスレッドは再度中断されます。単一スレッド呼び出し中に開始されたスレッドは、 その単一スレッド呼び出しの完了時には中断されません。
呼び出し中にターゲット VM が切断された (たとえば、VirtualMachine.dispose() によって) 場合でも、メソッドの呼び出しは続行されます。
thread - 呼び出しを行うスレッドmethod - 呼び出すコンストラクタ Methodarguments - 呼び出されるコンストラクタにバインドされた Value 引数のリスト。リストから取得した値は、コンストラクタシグニチャーに指定されている順序で引数に代入されるoptions - 整数ビットフラグオプション
ObjectReference ミラー
IllegalArgumentException - メソッドがこのクラスのメンバでない場合、引数リストのサイズがコンストラクタに対して宣言された引数の数に一致しない場合、またはメソッドがコンストラクタでない場合
{@link - InvalidTypeException} 対応するメソッドの引数型に代入できない引数が引数リストにある場合
ClassNotLoadedException - 引数型が、適切なクラスローダによってロードされていない場合
IncompatibleThreadStateException - 指定されたスレッドが、イベントによって中断されていない場合
InvocationException - メソッドの呼び出しにより、ターゲット VM で例外が発生した場合
InvalidTypeException - 引数が以下の条件を満たさない場合 -- オブジェクト引数は、この引数型への代入互換性を持たなければなりません (これは、この引数型は、囲むクラスのクラスローダによってロードする必要があることを意味する)。プリミティブ引数は、この引数型への代入互換性を持っているか、情報を失わずにこの引数型に変換できる必要があります。代入互換性の詳細は、Java 言語仕様のセクション 5.2 を参照してください
public Method concreteMethodByName(String name,
String signature)
Method を返します。シグニチャー形式の詳細は、ReferenceType.methodsByName(java.lang.String, java.lang.String) を参照してください。
返されるメソッド (null 以外の場合) は、ClassType のコンポーネントです。
name - 検索対象のメソッドの名前signature - 検索対象のメソッドのシグニチャー
Method、または null (一致するものがない場合)
ClassNotPreparedException - クラスが準備されていないために、メソッドがまだ利用可能ではない場合ReferenceType.visibleMethods(),
ReferenceType.methodsByName(java.lang.String name),
ReferenceType.methodsByName(java.lang.String name, java.lang.String signature)
|
Java Debug Interface | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||