Java Debug Interface

com.sun.jdi
インタフェース ReferenceType

すべてのスーパーインタフェース:
Accessible, java.lang.Comparable, Mirror, Type
既知のサブインタフェースの一覧:
ArrayType, ClassType, InterfaceType

public interface ReferenceType
extends Type, java.lang.Comparable, Accessible

ターゲット VM 内のオブジェクトの型です。ReferenceType には、Java 言語仕様に定義されたクラス、インタフェース、および配列型が含まれます。それぞれの型には、対応するサブインタフェースがあります。VM では、これらの 3 つの型のすべての Class オブジェクトが生成されます。VM 側では、各 ReferenceType は異なる Class オブジェクトにマップされます。

ReferenceType を取得するには、特定の ObjectReference にその型を照会するか、VirtualMachine からすべての参照型のリストを取得します。

ReferenceType を使用して、メソッドやフィールドなどの静的な型の情報、または対応する Class オブジェクトやクラスローダなどの動的な型の情報にアクセスすることができます。

導入されたバージョン:
1.3
関連項目:
ObjectReference, ObjectReference.referenceType(), VirtualMachine, VirtualMachine.allClasses()

メソッドの概要
 java.util.List allFields()
          この型、そのスーパークラス、実装インタフェース、およびスーパーインタフェース、あるいはそのいずれかで宣言された各 Field を含むリストを返します。
 java.util.List allLineLocations()
          この参照型内の各実行可能なソース行に対して Location オブジェクトを返します。
 java.util.List allMethods()
          この型、そのスーパークラス、実装インタフェース、およびスーパーインタフェース、あるいはそのいずれかで宣言された各 Method を含むリストを返します。
 ClassLoaderReference classLoader()
          この型に対応するクラスをロードしたクラスローダのオブジェクトを取得します。
 ClassObjectReference classObject()
          ターゲット VM 内でこの型に対応するクラスオブジェクトを返します。
 boolean equals(java.lang.Object obj)
          指定された Object とこの ReferenceType が等しいかどうか比較します。
 boolean failedToInitialize()
          この型の初期化が失敗したかどうかを判定します。
 Field fieldByName(java.lang.String fieldName)
          指定されたあいまいでない名前で可視 Field を検索します。
 java.util.List fields()
          この型で宣言された各 Field を含むリストを返します。
 Value getValue(Field field)
          この型内の指定の static FieldValue を取得します。
 java.util.Map getValues(java.util.List fields)
          指定のリスト中の各 static FieldValue を含むマップを返します。
 int hashCode()
          この ObjectReference のハッシュコード値を返します。
 boolean isAbstract()
          この型が abstract として宣言されたかどうかを判定します。
 boolean isFinal()
          この型が final として宣言されたかどうかを判定します。
 boolean isInitialized()
          この型が初期化されているかどうかを判定します。
 boolean isPrepared()
          この型が準備されているかどうかを判定します。
 boolean isStatic()
          この型が static として宣言されたかどうかを判定します。
 boolean isVerified()
          この型が検証されているかどうかを判定します。
 java.util.List locationsOfLine(int lineNumber)
          指定された行番号にマップされた Location オブジェクトがすべて含まれる List を返します。
 java.util.List methods()
          この型で直接宣言された各 Method のリストを返します。
 java.util.List methodsByName(java.lang.String name)
          指定された名前を持つ各可視 Method を含む List を返します。
 java.util.List methodsByName(java.lang.String name, java.lang.String signature)
          指定の名前とシグニチャーを持つ各可視 Method を含むリストを返します。
 java.lang.String name()
          この型の完全修飾名を取得します。
 java.util.List nestedTypes()
          この型内に宣言された各 ReferenceType の List を返します。
 java.lang.String sourceName()
          この型の宣言に対応するソースの識別名を取得します。
 java.util.List visibleFields()
          この型の各 Field を含むリストを返します。
 java.util.List visibleMethods()
          この型によって宣言された、または継承された各 Method のリストを返します。
 
インタフェース com.sun.jdi.Type から継承したメソッド
signature
 
インタフェース com.sun.jdi.Mirror から継承したメソッド
toString, virtualMachine
 
インタフェース java.lang.Comparable から継承したメソッド
compareTo
 
インタフェース com.sun.jdi.Accessible から継承したメソッド
isPackagePrivate, isPrivate, isProtected, isPublic, modifiers
 

メソッドの詳細

name

public java.lang.String name()
この型の完全修飾名を取得します。この名前は、この型のオブジェクトが Java 言語で宣言される書式と同様の書式で返されます。

プリミティブクラスの場合、返される名前は対応するプリミティブ型の名前です。たとえば、java.lang.Integer#TYPE によって表されるクラスの名前は「int」として返されます。

定義:
インタフェース Type 内の name
戻り値:
型名を含む文字列
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

classLoader

public ClassLoaderReference classLoader()
この型に対応するクラスをロードしたクラスローダのオブジェクトを取得します。
戻り値:
クラスローダをミラー化する ClassLoaderReference。クラスがブートストラップクラスローダによってロードされた場合は null
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

sourceName

public java.lang.String sourceName()
                            throws AbsentInformationException
この型の宣言に対応するソースの識別名を取得します。この文字列は、ソースリポジトリ機構で解釈されます。

リファレンス実装では、返される文字列は、この型の宣言を含むソースファイルの非修飾名です。

戻り値:
文字列型のソースファイル名
例外:
AbsentInformationException - ソース名が不明の場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

isStatic

public boolean isStatic()
この型が static として宣言されたかどうかを判定します。型が入れ子になっていない場合は、static として宣言できません。このため、パッケージレベルの型、配列型、またはプリミティブクラス (java.lang.Integer#TYPE など) の場合は、false が返されます。
戻り値:
この型が static の場合は true、それ以外の場合は false
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

isAbstract

public boolean isAbstract()
この型が abstract として宣言されたかどうかを判定します。配列およびプリミティブクラス (java.lang.Integer#TYPE など) の場合は、戻り値は未定義です。
戻り値:
この型が abstract の場合は true、それ以外の場合は false
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

isFinal

public boolean isFinal()
この型が final として宣言されたかどうかを判定します。ArrayType、および java.lang.Integer#TYPE などのプリミティブクラスの場合は、戻り値は常に true です。
戻り値:
この型が final の場合は true、それ以外の場合は false
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

isPrepared

public boolean isPrepared()
この型が準備されているかどうかを判定します。クラスの準備の定義については、JVM 仕様を参照してください。配列およびプリミティブクラス (例 java.lang.Integer#TYPE) の場合は、戻り値は未定義です。
戻り値:
この型が準備されている場合は true、それ以外の場合は false
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

isVerified

public boolean isVerified()
この型が検証されているかどうかを判定します。クラスの検証の定義については、JVM 仕様を参照してください。配列の場合とプリミティブクラス (例 java.lang.Integer#TYPE) の場合は、戻り値は未定義です。
戻り値:
この型が検証されている場合は true、それ以外の場合は false
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

isInitialized

public boolean isInitialized()
この型が初期化されているかどうかを判定します。クラスの検証の定義については、JVM 仕様を参照してください。InterfaceType の場合は、 このメソッドは常に isPrepared() と同じ値を返します。配列およびプリミティブクラス (java.lang.Integer#TYPE など) の場合は、戻り値は未定義です。
戻り値:
この型が初期化されている場合は true、それ以外の場合は false
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

failedToInitialize

public boolean failedToInitialize()
この型の初期化が失敗したかどうかを判定します。クラスの初期化の定義については、JVM 仕様を参照してください。配列およびプリミティブクラス (java.lang.Integer#TYPE など) の場合は、戻り値は未定義です。
戻り値:
初期化が失敗している場合は true、それ以外の場合は false
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

fields

public java.util.List fields()
この型で宣言された各 Field を含むリストを返します。継承されたフィールドは、含まれません。コンパイラによって作成された合成フィールドがある場合は、そのフィールドもこのリストに含まれます。
戻り値:
Field オブジェクトのリスト。フィールドが存在しない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

visibleFields

public java.util.List visibleFields()
この型の各 Field を含むリストを返します。ただし、隠しフィールドおよびあいまいなフィールドは含まれません。このクラスまたはそのインスタンスから、単純名でアクセスできる各フィールドが含まれます。あいまいに多重継承されたフィールド、つまりあとで継承されたクラスの同じ名前のフィールドによって隠されたフィールドには、単純名でアクセスすることはできません。このようなフィールドは、返されるリストにも含まれません。その他の継承されたフィールドは、すべてこのリストに含まれます。詳細は、Java 言語仕様のセクション 8.3 を参照してください。
戻り値:
Field オブジェクトの List。可視フィールドが存在しない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

allFields

public java.util.List allFields()
この型、そのスーパークラス、実装インタフェース、およびスーパーインタフェース、あるいはそのいずれかで宣言された各 Field を含むリストを返します。隠しフィールドおよび多重継承されたフィールドを含め、宣言されたフィールドおよび継承されたフィールドをすべて返します。
戻り値:
Field オブジェクトの List。フィールドが存在しない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

fieldByName

public Field fieldByName(java.lang.String fieldName)
指定されたあいまいでない名前で可視 Field を検索します。このメソッドは、Java 言語仕様のセクション 8.3.3 に指定された継承規則に従って可視性を判断します。
パラメータ:
目的のフィールドの名前を含む文字列 -  
戻り値:
見つかったフィールドをミラー化する Field オブジェクト。指定の名前のフィールドがない場合、または指定の名前があいまいな場合は null
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

methods

public java.util.List methods()
この型で直接宣言された各 Method のリストを返します。継承されたメソッドは、含まれません。このリストには、コンストラクタ、初期化メソッド (ある場合)、およびコンパイラによって作成された合成メソッドが含まれます。
戻り値:
Method オブジェクトのリスト。メソッドが存在しない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

visibleMethods

public java.util.List visibleMethods()
この型によって宣言された、または継承された各 Method のリストを返します。隠されたまたはオーバライドされた、スーパークラスまたはスーパーインタフェースからのメソッドは含まれません。

ただし返されるリストには、同じシグニチャーを持つ多重継承メソッドが含まれることがありますが、ClassType のメンバが複数含まれることはありません。詳細は、Java 言語仕様のセクション 8.4.6 を参照してください。

戻り値:
Method オブジェクトの List。可視メソッドが存在しない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

allMethods

public java.util.List allMethods()
この型、そのスーパークラス、実装インタフェース、およびスーパーインタフェース、あるいはそのいずれかで宣言された各 Method を含むリストを返します。隠しフィールドおよびオーバライドされたフィールドを含め、宣言されたフィールドおよび継承されたフィールドをすべて返します。
戻り値:
Method オブジェクトの List。メソッドが存在しない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

methodsByName

public java.util.List methodsByName(java.lang.String name)
指定された名前を持つ各可視 Method を含む List を返します。オーバーロードされたメソッドを検索するときによく使用します。

オーバーライドされたメソッドおよび隠されたメソッドは、含まれません。詳細は、Java 言語仕様のセクション 8.4.6 を参照してください。

パラメータ:
name - 検索対象のメソッドの名前
戻り値:
指定の名前に一致する Method オブジェクトの List。一致するメソッドが見つからない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

methodsByName

public java.util.List methodsByName(java.lang.String name,
                                    java.lang.String signature)
指定の名前とシグニチャーを持つ各可視 Method を含むリストを返します。シグニチャー文字列は、ターゲットメソッドの JNI シグニチャーです。 このメソッドは、Java 言語仕様のセクション 8.4.6 に明記された継承規則に従って可視性を判断します。

このリストには、ClassType の構成要素である具象メソッドが複数含まれることはありません。このリスト内のその他のメソッドは、abstract メソッドです。 一致する具象メソッドだけを取り出すには、ClassType.concreteMethodByName(java.lang.String, java.lang.String) を使用します。

パラメータ:
name - 検索対象のメソッドの名前
signature - 検索対象のメソッドのシグニチャー
戻り値:
指定された名前とシグニチャーに一致する Method オブジェクトの List。一致するメソッドが見つからない場合は、リストの長さはゼロになる
例外:
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

nestedTypes

public java.util.List nestedTypes()
この型内に宣言された各 ReferenceType の List を返します。静的な入れ子になった型と、静的でない入れ子になった型 (つまり、内部型) の両方が含まれます。この参照型内のコードブロックに宣言されたローカル内部型も、返されるリストに含まれます。
戻り値:
入れ子になった ReferenceType オブジェクトの List。入れ子になった型がない場合は、リストの長さはゼロになる
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

getValue

public Value getValue(Field field)
この型内の指定の static FieldValue を取得します。Field は、この型に対して有効である必要があります。つまり、Field は、この型、スーパークラス、スーパーインタフェース、または実装インタフェースで宣言されている必要があります。
パラメータ:
sig - 要求された値を含むフィールド
戻り値:
インスタンスのフィールドの Value
例外:
java.lang.IllegalArgumentException - このフィールドが、このオブジェクトのクラスに無効である場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

getValues

public java.util.Map getValues(java.util.List fields)
指定のリスト中の各 static FieldValue を含むマップを返します。Field は、この型に対して有効である必要があります。つまり、Field は、この型、スーパークラス、スーパーインタフェース、または実装インタフェースで宣言されている必要があります。
パラメータ:
fields - 要求された値を含む Field オブジェクトのリスト
戻り値:
要求された Field オブジェクトとその Value のマップ
例外:
java.lang.IllegalArgumentException - このオブジェクトのクラスに無効なフィールドがある場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合
VMMismatchException - Mirror 引数とこのミラーが同じ VirtualMachine に属さない場合

classObject

public ClassObjectReference classObject()
ターゲット VM 内でこの型に対応するクラスオブジェクトを返します。VM は、すべての種類の ReferenceType (クラス、インタフェース、および配列型) のクラスオブジェクトを生成します。
戻り値:
ターゲット VM 内でのこの参照型の ClassObjectReference
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

allLineLocations

public java.util.List allLineLocations()
                                throws AbsentInformationException
この参照型内の各実行可能なソース行に対して Location オブジェクトを返します。各位置では、特定のソース行がコードインデックスの特定の範囲にマップされています。この範囲の開始点は、Location.codeIndex() によって調べることができます。コンパイラまたは VM 、あるいはその両方によって、連続していない 2 つ以上のコードインデックスの範囲に特定の行がマップされていることがあります。この場合は、1 つの行に複数の位置が含まれたリストが返されます。 同じソース行が、「複数の」メソッド間で、異なるコードインデックスの範囲にマップされていることがあります。

この参照型が ArrayType の場合は、返されるリストは常に空になります。この参照型が InterfaceType の場合は、そのクラスの初期化メソッド内に、インタフェースが実行可能なコードを持たない場合は、返されるリストが空になります。

戻り値:
すべてのソース行 Location オブジェクトの List
例外:
AbsentInformationException - このクラスに対する行番号情報がなく、かつこのクラスの実行可能メンバに非 native で非 abstract なものが存在する場合
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

locationsOfLine

public java.util.List locationsOfLine(int lineNumber)
                               throws AbsentInformationException
指定された行番号にマップされた Location オブジェクトがすべて含まれる List を返します。

この参照型が ArrayType の場合は、返されるリストは常に空になります。この参照型が InterfaceType の場合は、そのクラスの初期化メソッド内の指定された行番号に、インタフェースが実行可能なコードを持たない場合は、返されるリストが空になります。

戻り値:
指定された行にマップされたすべての Location オブジェクトの List
例外:
AbsentInformationException - このクラスに対する行番号情報がない場合
ClassNotPreparedException - このクラスがまだ準備されていない場合
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合
InvalidLineNumberException - 指定された行に関連した実行可能なコードがない場合

equals

public boolean equals(java.lang.Object obj)
指定された Object とこの ReferenceType が等しいかどうか比較します。
オーバーライド:
クラス java.lang.Object 内の equals
戻り値:
Object が ReferenceType である場合、両方の ReferenceType が同じ VM に属している場合、およびその VM の java.lang.Class の同じインスタンスに対応するクラスが ReferenceType によってミラー化されている場合は true
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

hashCode

public int hashCode()
この ObjectReference のハッシュコード値を返します。
オーバーライド:
クラス java.lang.Object 内の hashCode
戻り値:
整数のハッシュコード
例外:
ObjectCollectedException - この参照型がアンロードされ、ガベージコレクトされている場合

Java Debug Interface