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