パッケージ org.springframework.asm

クラス MethodVisitor

java.lang.ObjectSE
org.springframework.asm.MethodVisitor
既知の直属サブクラス
LocalVariablesSorterMethodVisitorTee

public abstract class MethodVisitor extends ObjectSE
Java メソッドを訪問する訪問者。このクラスのメソッドは、次の順序で呼び出す必要があります: (visitParameter)* [ visitAnnotationDefault ](visitAnnotation | visitAnnotableParameterCount | visitParameterAnnotation visitTypeAnnotation | visitAttribute)* [ visitCode (visitFrame | visit<i>X</i>Insn | visitLabel | visitInsnAnnotation |  visitTryCatchBlock | visitTryCatchAnnotation | visitLocalVariable |  visitLocalVariableAnnotation | visitLineNumber)* visitMaxs ] visitEnd。さらに、visit<i>X</i>Insn および visitLabel メソッドは、訪問先コードのバイトコード命令の順序で呼び出す必要があります。visitInsnAnnotation は 、アノテーション付き命令の後に呼び出す必要があります。visitTryCatchBlock は、引数として渡されるラベルが訪問される前に呼び出す必要があります。 visitTryCatchBlockAnnotation は、対応の try catch ブロックの後に呼ばれるが訪問してきた、との引数として渡されたラベルが訪問されたvisitLocalVariablevisitLocalVariableAnnotation visitLineNumber メソッドを呼び出す必要があります。
作成者:
Eric Bruneton
  • フィールドの詳細

    • api

      protected final int api
      この訪問者によって実装された ASMAPI バージョン。このフィールドの値は、Opcodes で ASM の x の値のいずれかでなければなりません。
    • mv

      protected MethodVisitor mv
      このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。null の可能性があります。
  • コンストラクターの詳細

    • MethodVisitor

      protected MethodVisitor(int api)
      新しい MethodVisitor を構築します。
      パラメーター:
      api - この訪問者によって実装された ASMAPI バージョン。Opcodes で  ASM の x の値のいずれかでなければなりません。
    • MethodVisitor

      protected MethodVisitor(int api, MethodVisitor methodVisitor)
      新しい MethodVisitor を構築します。
      パラメーター:
      api - この訪問者によって実装された ASMAPI バージョン。Opcodes で  ASM の x の値のいずれかでなければなりません。
      methodVisitor - このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。null の可能性があります。
  • メソッドの詳細

    • getDelegate

      public MethodVisitor getDelegate()
      このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。null の可能性があります。
      戻り値:
      このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター、または null。
    • visitParameter

      public void visitParameter(StringSE name, int access)
      このメソッドのパラメーターを訪問します。
      パラメーター:
      name - パラメーター名。指定されていない場合は null。
      access - パラメーターのアクセスフラグ、ACC_FINALACC_SYNTHETIC、/ および ACC_MANDATED のみが許可されます(Opcodes を参照)。
    • visitAnnotationDefault

      public AnnotationVisitor visitAnnotationDefault()
      このアノテーションインターフェースメソッドのデフォルト値にアクセスします。
      戻り値:
      このアノテーションインターフェースメソッドの実際のデフォルト値にアクセスする訪問者、またはこの訪問者がこのデフォルト値にアクセスすることに関心がない場合は null。このアノテーションビジターのメソッドに渡された「名前」パラメーターは無視されます。さらに、このアノテーションビジターでは、visit メソッドを 1 つだけ呼び出してから、visitEnd を呼び出す必要があります。
    • visitAnnotation

      public AnnotationVisitor visitAnnotation(StringSE descriptor, boolean visible)
      このメソッドのアノテーションにアクセスします。
      パラメーター:
      descriptor - アノテーションクラスのクラス記述子。
      visible - 実行時にアノテーションが表示される場合は true。
      戻り値:
      アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
    • visitTypeAnnotation

      public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, StringSE descriptor, boolean visible)
      メソッドシグネチャーの型のアノテーションにアクセスします。
      パラメーター:
      typeRef - アノテーション付き型への参照。この型の参照の種類は、TypeReference.METHOD_TYPE_PARAMETERTypeReference.METHOD_TYPE_PARAMETER_BOUNDTypeReference.METHOD_RETURNTypeReference.METHOD_RECEIVERTypeReference.METHOD_FORMAL_PARAMETERTypeReference.THROWS である必要があります。TypeReference を参照してください。
      typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は null になることがあります。
      descriptor - アノテーションクラスのクラス記述子。
      visible - 実行時にアノテーションが表示される場合は true。
      戻り値:
      アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
    • visitAnnotableParameterCount

      public void visitAnnotableParameterCount(int parameterCount, boolean visible)
      アノテーションを持つことができるメソッドパラメーターの数にアクセスします。デフォルトでは(つまり、このメソッドが呼び出されない場合)、メソッド記述子によって定義されたすべてのメソッドパラメーターにアノテーションを付けることができます。
      パラメーター:
      parameterCount - アノテーションを持つことができるメソッドパラメーターの数。この数は、メソッド記述子のパラメーター型の数以下である必要があります。メソッドに合成パラメーターがあり、パラメーターアノテーションの目的でパラメーターインデックスを計算するときにこれらのパラメーターが無視される場合は、厳密に少なくなる可能性があります(https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.18) を参照)。
      visible - 実行時にアノテーションを表示できるメソッドパラメーターの数を定義する場合は true、実行時にアノテーションを非表示にすることができるメソッドパラメーターの数を定義する場合は false。
    • visitParameterAnnotation

      public AnnotationVisitor visitParameterAnnotation(int parameter, StringSE descriptor, boolean visible)
      このメソッドのパラメーターのアノテーションにアクセスします。
      パラメーター:
      parameter - パラメーターインデックス。このインデックスは、メソッド記述子のパラメーターの数よりも厳密に小さく、visitAnnotableParameterCount(int, boolean) で指定されたパラメーターの数よりも厳密に小さくする必要があります。重要な注意: 特に合成パラメーターの場合、パラメーターインデックス i は、メソッド記述子の i 番目のパラメーター記述子に対応する必要はありません(https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.18) を参照)。
      descriptor - アノテーションクラスのクラス記述子。
      visible - 実行時にアノテーションが表示される場合は true。
      戻り値:
      アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
    • visitAttribute

      public void visitAttribute(Attribute attribute)
      このメソッドの非標準属性を訪問します。
      パラメーター:
      attribute - 属性。
    • visitCode

      public void visitCode()
      メソッドのコード(つまり、非抽象メソッド)の訪問を開始します。
    • visitFrame

      public void visitFrame(int type, int numLocal, ObjectSE[] local, int numStack, ObjectSE[] stack)
      ローカル変数とオペランドスタック要素の現在の状態にアクセスします。このメソッドは、ジャンプ命令のターゲットである GOTO や THROW などの無条件ブランチ命令に続く命令 i の 直前、または例外ハンドラーブロックを開始する命令 i の直前に呼び出す必要があります。 訪問する型は、i が実行される直前に、ローカル変数とオペランドスタック要素の値を記述する必要があります。

      (*)これは、バージョンが Opcodes.V1_6 以上のクラスにのみ必須です。

      メソッドのフレームは、拡張形式または圧縮形式のいずれかで指定する必要があります(すべてのフレームは同じ形式を使用する必要があります。つまり、単一のメソッド内で拡張フレームと圧縮フレームを混在させないでください)。
      • 拡張形式では、すべてのフレームが F_NEW 型である必要があります。
      • 圧縮形式では、フレームは基本的に前のフレームの状態からの「デルタ」です。
        • Opcodes.F_SAME は、前のフレームとまったく同じローカルで、スタックが空のフレームを表します。
        • Opcodes.F_SAME1 は、前のフレームとまったく同じローカルで、スタック上の単一の値を持つフレームを表します(numStack は 1 で、stack[0] にはスタックアイテムの型の値が含まれます)。
        • 現在のローカルを持つフレームを表す Opcodes.F_APPEND は、追加のローカルが定義されていることを除いて、前のフレームのローカルと同じです( numLocal は 1, 2 または 3 であり、local 要素には追加された型を表す値が含まれます)。
        • 現在のローカルを持つフレームを表す Opcodes.F_CHOP は、最後の 1 〜 3 のローカルが存在せず、スタックが空であることを除いて、前のフレームのローカルと同じです(numLocal は 1, 2 または 3 です)。
        • 完全なフレームデータを表す Opcodes.F_FULL

      どちらの場合も、メソッドのパラメーターとアクセスフラグに対応する最初のフレームは暗黙的であり、アクセスしてはなりません。また、同じコード位置で 2 つ以上のフレームにアクセスすることは不正です(つまり、visitFrame への 2 回の呼び出しの間に少なくとも 1 つの命令にアクセスする必要があります)。
      パラメーター:
      type - このスタックマップフレームの型。拡張フレームの場合は Opcodes.F_NEW、圧縮フレームの場合は Opcodes.F_FULLOpcodes.F_APPENDOpcodes.F_CHOPOpcodes.F_SAME または Opcodes.F_APPENDOpcodes.F_SAME1 である必要があります。
      numLocal - 訪問したフレーム内のローカル変数の数。long 値と double 値は、1 つの変数としてカウントされます。
      local - このフレームのローカル変数の型。この配列は変更しないでください。プリミティブ型は Opcodes.TOPOpcodes.INTEGEROpcodes.FLOATOpcodes.LONGOpcodes.DOUBLEOpcodes.NULL または Opcodes.UNINITIALIZED_THIS で表されます。( long と double は単一要素で表されます)。参照型は String オブジェクト (内部名を表す。Type.getInternalName() を参照) で表され、初期化されていない型は Label オブジェクトで表されます (このラベルは、この初期化されていない値を作成した NEW 命令を示します)。
      numStack - 訪問したフレームのオペランドスタック要素の数。long 値と double 値は、1 つのスタック要素としてカウントされます。
      stack - このフレームのオペランドスタック型。この配列は変更しないでください。その内容は「ローカル」配列と同じ形式です。
      例外:
      IllegalStateExceptionSE - フレームが次のフレームの直後にアクセスされ、2 つの間に命令がない場合(このフレームが Opcodes#F_SAME フレームである場合を除き、この場合は確認なしで無視されます)。
    • visitInsn

      public void visitInsn(int opcode)
      ゼロオペランド命令にアクセスします。
      パラメーター:
      opcode - the opcode of the instruction to be visited. This opcode is either NOP, ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, LCONST_0, LCONST_1, FCONST_0, FCONST_1, FCONST_2, DCONST_0, DCONST_1, IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE, SASTORE, POP, POP2, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP, IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM, INEG, LNEG, FNEG, DNEG, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, RETURN, ARRAYLENGTH, ATHROW, MONITORENTER, or MONITOREXIT.
    • visitIntInsn

      public void visitIntInsn(int opcode, int operand)
      単一の int オペランドを持つ命令を訪問します。
      パラメーター:
      opcode - 訪問する命令のオペコード。このオペコードは、BIPUSH、SIPUSH、NEWARRAY のいずれかです。
      operand - 訪問する命令のオペランド。
      オペコードが BIPUSH の場合、オペランド値は Byte.MIN_VALUE と Byte.MAX_VALUE の間にある必要があります。
      オペコードが SIPUSH の場合、オペランド値は Short.MIN_VALUE と Short.MAX_VALUE の間にある必要があります。
      オペコードが NEWARRAY の場合、オペランド値は Opcodes.T_BOOLEANOpcodes.T_CHAROpcodes.T_FLOATOpcodes.T_DOUBLEOpcodes.T_BYTEOpcodes.T_SHORTOpcodes.T_INTOpcodes.T_LONG のいずれかである必要があります。
    • visitVarInsn

      public void visitVarInsn(int opcode, int varIndex)
      ローカル変数命令にアクセスします。ローカル変数命令は、ローカル変数の値をロードまたは格納する命令です。
      パラメーター:
      opcode - 訪問するローカル変数命令のオペコード。このオペコードは、ILOAD、LLOAD、FLOAD、DLOAD、ALOAD、ISTORE、LSTORE、FSTORE、DSTORE、ASTORE、RET のいずれかです。
      varIndex - 訪問する命令のオペランド。このオペランドは、ローカル変数のインデックスです。
    • visitTypeInsn

      public void visitTypeInsn(int opcode, StringSE type)
      型命令を訪問します。型命令は、クラスの内部名をパラメーターとして受け取る命令です ( Type.getInternalName() を参照)。
      パラメーター:
      opcode - 訪問する型命令のオペコード。このオペコードは、NEW、ANEWARRAY、CHECKCAST、INSTANCEOF のいずれかです。
      type - 訪問する命令のオペランド。このオペランドは、オブジェクトまたは配列クラスの内部名である必要があります(Type.getInternalName() を参照)。
    • visitFieldInsn

      public void visitFieldInsn(int opcode, StringSE owner, StringSE name, StringSE descriptor)
      フィールドインストラクションを訪問します。フィールド命令は、オブジェクトのフィールドの値をロードまたは格納する命令です。
      パラメーター:
      opcode - 訪問する型命令のオペコード。このオペコードは、GETSTATIC、PUTSTATIC、GETFIELD、PUTFIELD のいずれかです。
      owner - フィールドの所有者クラスの内部名(Type.getInternalName() を参照)。
      name - フィールドの名前。
      descriptor - フィールドの記述子(Type を参照)
    • visitMethodInsn

      @DeprecatedSE public void visitMethodInsn(int opcode, StringSE owner, StringSE name, StringSE descriptor)
      使用すべきではありません。
      代わりに visitMethodInsn(int, String, String, String, boolean) を使用してください。
      メソッドの説明にアクセスします。メソッド命令は、メソッドを呼び出す命令です。
      パラメーター:
      opcode - 訪問する型命令のオペコード。このオペコードは、INVOKEVIRTUAL、INVOKESPECIAL、INVOKESTATIC、INVOKEINTERFACE のいずれかです。
      owner - メソッドの所有者クラスの内部名(Type.getInternalName() を参照)。
      name - メソッドの名前。
      descriptor - メソッドの記述子(Type を参照)
    • visitMethodInsn

      public void visitMethodInsn(int opcode, StringSE owner, StringSE name, StringSE descriptor, boolean isInterface)
      メソッドの説明にアクセスします。メソッド命令は、メソッドを呼び出す命令です。
      パラメーター:
      opcode - 訪問する型命令のオペコード。このオペコードは、INVOKEVIRTUAL、INVOKESPECIAL、INVOKESTATIC、INVOKEINTERFACE のいずれかです。
      owner - メソッドの所有者クラスの内部名(Type.getInternalName() を参照)。
      name - メソッドの名前。
      descriptor - メソッドの記述子(Type を参照)
      isInterface - メソッドの所有者クラスがインターフェースの場合。
    • visitInvokeDynamicInsn

      public void visitInvokeDynamicInsn(StringSE name, StringSE descriptor, Handle bootstrapMethodHandle, ObjectSE... bootstrapMethodArguments)
      invokedynamic 命令にアクセスします。
      パラメーター:
      name - メソッドの名前。
      descriptor - メソッドの記述子(Type を参照)
      bootstrapMethodHandle - ブートストラップメソッド。
      bootstrapMethodArguments - ブートストラップメソッドの定数引数。各引数は、IntegerSEFloatSELongSEDoubleSEStringSETypeHandleConstantDynamic の値である必要があります。このメソッドは配列の内容を変更できるため、呼び出し元はこの配列が変更される可能性があることを予期する必要があります。
    • visitJumpInsn

      public void visitJumpInsn(int opcode, Label label)
      ジャンプ命令にアクセスします。ジャンプ命令は、別の命令にジャンプする可能性のある命令です。
      パラメーター:
      opcode - 訪問する型命令のオペコード。このオペコードは、IFEQ、IFNE、IFLT、IFGE、IFGT、IFLE、IF_ICMPEQ、IF_ICMPNE、IF_ICMPLT、IF_ICMPGE、IF_ICMPGT、IF_ICMPLE、IF_ACMPEQ、IF_ACMPNE、GOTO、JSR、IFNULL、IFNONNULL のいずれかです。
      label - 訪問する命令のオペランド。このオペランドは、ジャンプ命令がジャンプできる命令を指定するラベルです。
    • visitLabel

      public void visitLabel(Label label)
      ラベルにアクセスします。ラベルは、その直後に訪問される命令を示します。
      パラメーター:
      label - Label オブジェクト。
    • visitLdcInsn

      public void visitLdcInsn(ObjectSE value)
      LDC 命令にアクセスします。新しい定数型は、Java 仮想マシンの将来のバージョンで追加される可能性があることに注意してください。新しい定数型を簡単に検出するには、このメソッドの実装で、次のような予期しない定数型をチェックする必要があります。
       if (cst instanceof Integer) {
           // ...
       } else if (cst instanceof Float) {
           // ...
       } else if (cst instanceof Long) {
           // ...
       } else if (cst instanceof Double) {
           // ...
       } else if (cst instanceof String) {
           // ...
       } else if (cst instanceof Type) {
           int sort = ((Type) cst).getSort();
           if (sort == Type.OBJECT) {
               // ...
           } else if (sort == Type.ARRAY) {
               // ...
           } else if (sort == Type.METHOD) {
               // ...
           } else {
               // throw an exception
           }
       } else if (cst instanceof Handle) {
           // ...
       } else if (cst instanceof ConstantDynamic) {
           // ...
       } else {
           // throw an exception
       }
       
      パラメーター:
      value - スタックにロードされる定数。このパラメーターは、バージョンが 49 のクラスでは、.class 定数の OBJECT または ARRAY ソートの null でない IntegerSEFloatSELongSEDoubleSEStringSEType、バージョンが 51 のクラスでは MethodType の METHOD ソートの Type、MethodHandle 定数の Handle、バージョンが 55 のクラスでは動的定数の ConstantDynamic でなければなりません。
    • visitIincInsn

      public void visitIincInsn(int varIndex, int increment)
      IINC 命令を訪問します。
      パラメーター:
      varIndex - インクリメントするローカル変数のインデックス。
      increment - ローカル変数をインクリメントする量。
    • visitTableSwitchInsn

      public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels)
      TABLESWITCH 命令を訪問します。
      パラメーター:
      min - キーの最小値。
      max - キーの最大値。
      dflt - デフォルトのハンドラーブロックの始まり。
      labels - ハンドラーブロックの始まり。labels[i] は、min + i キーのハンドラーブロックの先頭です。
    • visitLookupSwitchInsn

      public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
      LOOKUPSWITCH 命令を訪問します。
      パラメーター:
      dflt - デフォルトのハンドラーブロックの始まり。
      keys - キーの値。
      labels - ハンドラーブロックの始まり。labels[i] は、keys[i] キーのハンドラーブロックの先頭です。
    • visitMultiANewArrayInsn

      public void visitMultiANewArrayInsn(StringSE descriptor, int numDimensions)
      MULTIANEWARRAY 命令を訪問します。
      パラメーター:
      descriptor - 配列型記述子(Type を参照)。
      numDimensions - 割り当てる配列の次元数。
    • visitInsnAnnotation

      public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, StringSE descriptor, boolean visible)
      命令のアノテーションにアクセスします。このメソッドは、アノテーション付き命令の直後に呼び出す必要があります。同じ命令に対して複数回呼び出すことができます。
      パラメーター:
      typeRef - アノテーション付き型への参照。この型参照のソートは、TypeReference.INSTANCEOFTypeReference.NEWTypeReference.CONSTRUCTOR_REFERENCETypeReference.METHOD_REFERENCETypeReference.CASTTypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENTTypeReference.METHOD_INVOCATION_TYPE_ARGUMENTTypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENTTypeReference.METHOD_REFERENCE_TYPE_ARGUMENT である必要があります。TypeReference を参照してください。
      typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は null になることがあります。
      descriptor - アノテーションクラスのクラス記述子。
      visible - 実行時にアノテーションが表示される場合は true。
      戻り値:
      アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
    • visitTryCatchBlock

      public void visitTryCatchBlock(Label start, Label end, Label handler, StringSE type)
      try catch ブロックにアクセスします。
      パラメーター:
      start - 例外ハンドラーのスコープの先頭(両端を含む)。
      end - 例外ハンドラーのスコープの終わり(排他的)。
      handler - 例外ハンドラーのコードの先頭。
      type - ハンドラーによって処理される例外の型の内部名 ( Type.getInternalName() を参照)、または例外をキャッチする場合は null ( "finally" ブロックの場合)。
      例外:
      IllegalArgumentExceptionSE - ラベルの 1 つがこの訪問者によってすでに訪問されている場合(visitLabel(org.springframework.asm.Label) メソッドによる)。
    • visitTryCatchAnnotation

      public AnnotationVisitor visitTryCatchAnnotation(int typeRef, TypePath typePath, StringSE descriptor, boolean visible)
      例外ハンドラー型のアノテーションにアクセスします。このメソッドは、アノテーション付き例外ハンドラーの visitTryCatchBlock(org.springframework.asm.Label, org.springframework.asm.Label, org.springframework.asm.Label, java.lang.String)に呼び出す必要があります。同じ例外ハンドラーに対して複数回呼び出すことができます。
      パラメーター:
      typeRef - アノテーション付きの型への参照。この型参照の種類は TypeReference.EXCEPTION_PARAMETER でなければなりません。TypeReference を参照してください。
      typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は null になることがあります。
      descriptor - アノテーションクラスのクラス記述子。
      visible - 実行時にアノテーションが表示される場合は true。
      戻り値:
      アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
    • visitLocalVariable

      public void visitLocalVariable(StringSE name, StringSE descriptor, StringSE signature, Label start, Label end, int index)
      ローカル変数宣言にアクセスします。
      パラメーター:
      name - ローカル変数の名前。
      descriptor - このローカル変数の型記述子。
      signature - このローカル変数の型シグネチャー。ローカル変数型がジェネリクス型を使用しない場合は null になる可能性があります。
      start - このローカル変数のスコープに対応する最初の命令(両端を含む)。
      end - このローカル変数のスコープに対応する最後の命令(排他的)。
      index - ローカル変数のインデックス。
      例外:
      IllegalArgumentExceptionSE - ラベルの 1 つがこの訪問者によってまだ訪問されていない場合(visitLabel(org.springframework.asm.Label) メソッドによる)。
    • visitLocalVariableAnnotation

      public AnnotationVisitor visitLocalVariableAnnotation(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, StringSE descriptor, boolean visible)
      ローカル変数型のアノテーションにアクセスします。
      パラメーター:
      typeRef - アノテーション付き型への参照。この型参照の種類は、TypeReference.LOCAL_VARIABLE または TypeReference.RESOURCE_VARIABLE である必要があります。TypeReference を参照してください。
      typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は null になることがあります。
      start - このローカル変数のスコープを構成する連続範囲に対応する最初の命令(両端を含む)。
      end - このローカル変数のスコープを作成する連続範囲に対応する最後の命令(排他的)。この配列は、「開始」配列と同じサイズである必要があります。
      index - 各範囲のローカル変数のインデックス。この配列は、「開始」配列と同じサイズである必要があります。
      descriptor - アノテーションクラスのクラス記述子。
      visible - 実行時にアノテーションが表示される場合は true。
      戻り値:
      アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
    • visitLineNumber

      public void visitLineNumber(int line, Label start)
      行番号宣言にアクセスします。
      パラメーター:
      line - 行番号。この番号は、クラスがコンパイルされたソースファイルを参照します。
      start - この行番号に対応する最初の命令。
      例外:
      IllegalArgumentExceptionSE - この訪問者が start にまだアクセスしていない場合(visitLabel(org.springframework.asm.Label) メソッドによる)。
    • visitMaxs

      public void visitMaxs(int maxStack, int maxLocals)
      メソッドの最大スタックサイズとローカル変数の最大数にアクセスします。
      パラメーター:
      maxStack - メソッドの最大スタックサイズ。
      maxLocals - メソッドのローカル変数の最大数。
    • visitEnd

      public void visitEnd()
      メソッドの最後にアクセスします。最後に呼び出されるこのメソッドは、メソッドのすべてのアノテーションと属性が訪問されたことを訪問者に通知するために使用されます。