インタフェースCharacterRangeInfo
public sealed interface CharacterRangeInfo
CharacterRangeTableAttribute
内の単一の文字範囲エントリをモデル化します。
各文字範囲エントリは、コード配列内のインデックスの範囲を、ソース・ファイル内の文字位置の範囲に関連付けます。 ソース・ファイル内の文字位置は、行番号と列番号で表され、その値はlineNumber << 10 + columnNumber
としてエンコードされます。 ソース・ファイルにマルチバイト文字が存在する可能性があるため、列番号は列のバイト・インデックスと同じではありません。 各文字範囲エントリには、説明されている範囲の種類を示すフラグが含まれます: 文、代入、メソッド・コールなど。
- 導入されたバージョン:
- 24
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明int
ソース・ファイル内の文字位置のエンコードされた終端を排他的に返します。int
ソース・ファイルの文字位置の先頭をエンコードして返します。int
endPc()
コード配列のインデックスの末尾を排他的に返します。int
flags()
この文字範囲エントリのフラグを返します。static CharacterRangeInfo
of
(int startPc, int endPc, int characterRangeStart, int characterRangeEnd, int flags) 文字範囲エントリを返します。int
startPc()
コード配列のインデックスの開始を返します。
-
メソッドの詳細
-
startPc
int startPc()コード配列のインデックスの開始を返します。- 戻り値:
- コード配列内のインデックスの開始(包含)
- 関連項目:
-
endPc
int endPc()コード配列のインデックスの末尾を排他的に返します。- 戻り値:
- コード配列内のインデックスの末尾(排他)
- 関連項目:
-
characterRangeStart
int characterRangeStart()ソース・ファイルの文字位置の先頭をエンコードして返します。- 戻り値:
- ソース・ファイル内の文字位置のエンコードされた先頭(両端を含む)
-
characterRangeEnd
int characterRangeEnd()ソース・ファイル内の文字位置のエンコードされた終端を排他的に返します。- 戻り値:
- ソース・ファイル内の文字位置のエンコードされた終端(排他的)
-
flags
int flags()この文字範囲エントリのフラグを返します。flags項目の値は、範囲の種類を示します。 フラグ内に複数のフラグを設定できます。
CharacterRange.FLAG_STATEMENT
範囲は、文(ExpressionStatementを除く)、StatementExpression (JLS 14.8)、および文法内のLocalVariableDeclarationStatement (JLS 14.4)またはFieldDeclaration (JLS 8.3)の各VariableDeclaratorId = VariableInitializer
です。CharacterRange.FLAG_BLOCK
範囲は、文法のブロックです。CharacterRange.FLAG_ASSIGNMENT
Rangeは代入式です - 文法のExpression1 AssignmentOperator Expression1
、および増分および減分式(プレフィクスとポストフィクスの両方)。CharacterRange.FLAG_FLOW_CONTROLLER
制御フローに影響を与える値を持つ式。 次のFlowcon
:if ( Flowcon ) Statement [else Statement] for ( ForInitOpt ; [Flowcon] ; ForUpdateOpt ) Statement while ( Flowcon ) Statement do Statement while ( Flowcon ) ; switch ( Flowcon ) { SwitchBlockStatementGroups } Flowcon || Expression3 Flowcon && Expression3 Flowcon ? Expression : Expression1
CharacterRange.FLAG_FLOW_TARGET
CRT_FLOW_CONTROLLERの影響を受ける文または式。 次のFlowtarg
:if ( Flowcon ) Flowtarg [else Flowtarg] for ( ForInitOpt ; [Flowcon] ; ForUpdateOpt ) Flowtarg while ( Flowcon ) Flowtarg do Flowtarg while ( Flowcon ) ; Flowcon || Flowtarg Flowcon && Flowtarg Flowcon ? Flowtarg : Flowtarg
CharacterRange.FLAG_INVOKE
メソッドの起動。 例えば: 識別子引数。CharacterRange.FLAG_CREATE
新規オブジェクトの作成。 例えば: 新しい創造者CharacterRange.FLAG_BRANCH_TRUE
このアイテムのコード範囲に即時に含まれる分岐命令にエンコードされた条件は、ソース・コード内の対応する分岐条件に対して反転されません。 つまり、実際のジャンプは、ソース・コード・ブランチ条件がtrueと評価された場合にのみ発生します。 このタイプのエントリは、CRT_FLOW_CONTROLLERフラグの説明にリストされている条件に対してのみ生成されます。 エントリのソース範囲にフロー制御式が含まれています。このタイプのエントリのstart_pcフィールドは、ブランチ指示を指している必要があります: if_acmp<cond>、if_icmp<cond>、if<cond>、ifnonull、ifnullまたはgoto。 CRT_BRANCH_TRUEおよびCRT_BRANCH_FALSEは、実行時に選択された条件のブランチを決定するために使用できる特別な種類のエントリです。CharacterRange.FLAG_BRANCH_FALSE
このアイテムのコード範囲に即時に含まれる分岐命令にエンコードされた条件は、ソース・コード内の対応する分岐条件に対して反転されます。 I.e.実際のジャンプは、ソース・コード・ブランチ条件がfalseと評価される場合にのみ発生します。 このタイプのエントリは、CRT_FLOW_CONTROLLERフラグの説明にリストされている条件に対してのみ生成されます。 エントリのソース範囲にフロー制御式が含まれています。このタイプのエントリのstart_pcフィールドは、ブランチ指示を指している必要があります: if_acmp<cond>、if_icmp<cond>、if<cond>、ifnonull、ifnullまたはgoto。
上で割り当てられていないフラグ項目のすべてのビットは、将来使用するために予約されています。 生成されたクラス・ファイルではゼロに設定し、Java仮想マシンの実装では無視する必要があります。
- 戻り値:
- この文字範囲エントリのフラグ
- 関連項目:
-
of
static CharacterRangeInfo of(int startPc, int endPc, int characterRangeStart, int characterRangeEnd, int flags) 文字範囲エントリを返します。- APIのノート:
- 作成されたエントリを
CodeBuilder
に書き込むことはできません。 かわりにCodeBuilder::characterRange
を使用してください。 - パラメータ:
startPc
- コード配列内のインデックスの開始(包含)endPc
- コード配列内のインデックスの末尾(排他)characterRangeStart
- ソース・ファイル内の文字位置のエンコードされた先頭(両端を含む)characterRangeEnd
- ソース・ファイル内の文字位置のエンコードされた終端(排他的)flags
- このエントリのフラグ- 戻り値:
- 文字範囲エントリ
-