public interface Location extends Mirror, Comparable<Location>
位置の行番号を有効利用できるかどうかは、ターゲット VM から利用可能なデバッグ情報のレベルに依存します。
複数のミラーインタフェースが位置を保持します。このような各ミラーは、Locatable
インタフェースを拡張します。
Location のソース情報は使用される層によって変わります。層とは、一連の翻訳プロセスにおけるソースコードのレベルを指します。たとえば、baz という名前のプログラムを、Foo プログラミング言語で記述してから Bar 言語に翻訳し、最後に Java プログラミング言語に翻訳したとします。また、Java プログラミング言語層が「Java」
、残り 2 つの言語層がそれぞれ「Foo」、「Bar」と名付けられたものとします。このとき、sourceName()
メソッドと lineNumber()
メソッドを使って取得する位置は、「Foo」
層の場合であれば baz.foo の 14 行目、「Bar」
層であれば baz.bar の 23 行目、「Java」
層であれば 71 行目という具合になります。ある参照型に対して、Java プログラミング言語のソースファイルが 1 つしか存在しない場合、ほかの言語層でも 1 つとはかぎりません。このため、ソースパスを決定するには個々の Location を参照する必要があります。なお、層を明示的に指定しないメソッド (sourceName()
、sourcePath()
、および lineNumber()
) の場合、VM のデフォルト層 (VirtualMachine.getDefaultStratum()
) が使われます。メソッドパラメータとして明示的に指定されたか、VM のデフォルトとして暗黙に指定されたかに関係なく、指定された層が null
であったり宣言する型内で利用できなかったりした場合は、宣言する型のデフォルト層 (declaringType()
.defaultStratum()
) が使用されます。通常の Java プログラミング言語のソースから派生したコードの場合、存在する層は 1 つだけ (「Java」
だけ) であり、それがデフォルト層として返されます。利用可能な層を確認するには、ReferenceType.availableStrata()
を使用します。
EventRequestManager
, StackFrame
, BreakpointEvent
, ExceptionEvent
, Locatable
修飾子と型 | メソッドと説明 |
---|---|
long |
codeIndex()
この Location のメソッド内のコード位置を取得します。
|
ReferenceType |
declaringType()
この Location が属する型を取得します。
|
boolean |
equals(Object obj)
指定された Object がこの Location と等しいかどうか比較します。
|
int |
hashCode()
この Location のハッシュコード値を返します。
|
int |
lineNumber()
この Location の行番号を取得します。
|
int |
lineNumber(String stratum)
この Location の行番号です。
|
Method |
method()
この Location を含むメソッドを取得します。
|
String |
sourceName()
この位置に対応するソースの識別名を取得します。
|
String |
sourceName(String stratum)
この位置に対応するソースの識別名を取得します。
|
String |
sourcePath()
この位置に対応するソースへのパスを取得します。
|
String |
sourcePath(String stratum)
この位置に対応するソースへのパスを取得します。
|
toString, virtualMachine
compareTo
ReferenceType declaringType()
ClassType
ですが、実行可能な位置は InterfaceType
の static 初期化子内にも存在する場合があります。ReferenceType
。long codeIndex()
String sourceName() throws AbsentInformationException
このメソッドは、sourceName(vm.getDefaultStratum())
と同等です (詳細は sourceName(String)
を参照)。
AbsentInformationException
- ソース名が不明の場合String sourceName(String stratum) throws AbsentInformationException
返される名前は、指定された層の名前です。層の詳細は、class comment
を参照してください。
戻り値の文字列は、この Location のソースファイルの非修飾名です。たとえば、java.lang.Thread
の場合、"Thread.java"
が返されます。
stratum
- 情報取得元の層。宣言する型のデフォルト層を使用する場合は null
。AbsentInformationException
- ソース名が不明の場合String sourcePath() throws AbsentInformationException
このメソッドは、sourcePath(vm.getDefaultStratum())
と同等です (詳細は sourcePath(String)
を参照)。
AbsentInformationException
- ソース名が不明の場合String sourcePath(String stratum) throws AbsentInformationException
返されるパスは、指定された層のパスです。層の詳細は、class comment
を参照してください。
リファレンス実装では、Java プログラミング言語層のようにソースパスを明示的に指定しない層の場合、declaringType()
のパッケージ名をプラットフォーム固有のパス名に変換した結果に、この Location のソースファイルの修飾されていない名前 (sourceName(stratum)
) を付加した文字列が返されます。たとえば、Windows プラットフォームの場合、java.lang.Thread
は "java\lang\Thread.java"
を返します。
stratum
- 情報取得元の層。宣言する型のデフォルト層を使用する場合は null
。AbsentInformationException
- ソース名が不明の場合int lineNumber()
このメソッドは、lineNumber(vm.getDefaultStratum())
と同等です (詳細は lineNumber(String)
を参照)。
int lineNumber(String stratum)
sourceName(stratum)
により指定されたソースからの相対位置を示します。
返される行番号は、指定された層の行番号です。層の詳細は、class comment
を参照してください。
stratum
- 情報取得元の層。宣言する型のデフォルト層を使用する場合は null
。boolean equals(Object obj)
equals
、クラス: Object
obj
- 比較対象の参照オブジェクト。Object.hashCode()
, HashMap
int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
Copyright © 1999, 2013, Oracle and/or its affiliates. All rights reserved.