インタフェースCharacterRangeInfo


public sealed interface CharacterRangeInfo
CharacterRangeTableAttribute内の単一の文字範囲エントリをモデル化します。

各文字範囲エントリは、コード配列内のインデックスの範囲を、ソース・ファイル内の文字位置の範囲に関連付けます。 ソース・ファイル内の文字位置は、行番号と列番号で表され、その値はlineNumber << 10 + columnNumberとしてエンコードされます。 ソース・ファイルにマルチバイト文字が存在する可能性があるため、列番号は列のバイト・インデックスと同じではありません。 各文字範囲エントリには、説明されている範囲の種類を示すフラグが含まれます: 文、代入、メソッド・コールなど。

導入されたバージョン:
24
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    ソース・ファイル内の文字位置のエンコードされた終端を排他的に返します。
    int
    ソース・ファイルの文字位置の先頭をエンコードして返します。
    int
    コード配列のインデックスの末尾を排他的に返します。
    int
    この文字範囲エントリのフラグを返します。
    of(int startPc, int endPc, int characterRangeStart, int characterRangeEnd, int flags)
    文字範囲エントリを返します。
    int
    コード配列のインデックスの開始を返します。
  • メソッドの詳細

    • 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 - このエントリのフラグ
      戻り値:
      文字範囲エントリ