パッケージ org.springframework.asm
クラス MethodVisitor
java.lang.ObjectSE
org.springframework.asm.MethodVisitor
- 既知の直属サブクラス
LocalVariablesSorter
,MethodVisitorTee
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 ブロックの後に呼ばれるが訪問してきた、との引数として渡されたラベルが訪問された後 visitLocalVariable
、visitLocalVariableAnnotation
、 visitLineNumber
メソッドを呼び出す必要があります。- 作成者:
- Eric Bruneton
フィールドサマリー
修飾子と型フィールド説明protected final int
このビジターによって実装された ASM API バージョン。protected MethodVisitor
このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。コンストラクターのサマリー
修飾子コンストラクター説明protected
MethodVisitor
(int api) 新しいMethodVisitor
を構築します。protected
MethodVisitor
(int api, MethodVisitor methodVisitor) 新しいMethodVisitor
を構築します。メソッドのサマリー
修飾子と型メソッド説明このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。void
visitAnnotableParameterCount
(int parameterCount, boolean visible) アノテーションを付けることができるメソッドパラメーターの数にアクセスします。visitAnnotation
(StringSE descriptor, boolean visible) このメソッドのアノテーションにアクセスします。このアノテーションインターフェースメソッドのデフォルト値にアクセスします。void
visitAttribute
(Attribute attribute) このメソッドの非標準属性を訪問します。void
メソッドのコードの訪問を開始します(ある場合)。void
visitEnd()
メソッドの最後にアクセスします。void
visitFieldInsn
(int opcode, StringSE owner, StringSE name, StringSE descriptor) 現場指示を訪問します。void
visitFrame
(int type, int numLocal, ObjectSE[] local, int numStack, ObjectSE[] stack) ローカル変数とオペランドスタック要素の現在の状態にアクセスします。void
visitIincInsn
(int varIndex, int increment) IINC 命令を訪問します。void
visitInsn
(int opcode) ゼロオペランド命令にアクセスします。visitInsnAnnotation
(int typeRef, TypePath typePath, StringSE descriptor, boolean visible) 指示のアノテーションにアクセスします。void
visitIntInsn
(int opcode, int operand) 単一の int オペランドを持つ命令を訪問します。void
visitInvokeDynamicInsn
(StringSE name, StringSE descriptor, Handle bootstrapMethodHandle, ObjectSE... bootstrapMethodArguments) invokedynamic 命令にアクセスします。void
visitJumpInsn
(int opcode, Label label) ジャンプ命令を訪問します。void
visitLabel
(Label label) ラベルにアクセスします。void
visitLdcInsn
(ObjectSE value) LDC 命令を訪問します。void
visitLineNumber
(int line, Label start) 行番号宣言にアクセスします。void
visitLocalVariable
(StringSE name, StringSE descriptor, StringSE signature, Label start, Label end, int index) ローカル変数宣言にアクセスします。visitLocalVariableAnnotation
(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, StringSE descriptor, boolean visible) ローカル変数型のアノテーションにアクセスします。void
visitLookupSwitchInsn
(Label dflt, int[] keys, Label[] labels) LOOKUPSWITCH 命令を訪問します。void
visitMaxs
(int maxStack, int maxLocals) メソッドの最大スタックサイズとローカル変数の最大数にアクセスします。void
visitMethodInsn
(int opcode, StringSE owner, StringSE name, StringSE descriptor) 使用すべきではありません。void
visitMethodInsn
(int opcode, StringSE owner, StringSE name, StringSE descriptor, boolean isInterface) メソッドの説明にアクセスします。void
visitMultiANewArrayInsn
(StringSE descriptor, int numDimensions) MULTIANEWARRAY 命令を訪問します。void
visitParameter
(StringSE name, int access) このメソッドのパラメーターを訪問します。visitParameterAnnotation
(int parameter, StringSE descriptor, boolean visible) このメソッドのパラメーターのアノテーションにアクセスします。void
visitTableSwitchInsn
(int min, int max, Label dflt, Label... labels) TABLESWITCH 命令を訪問します。visitTryCatchAnnotation
(int typeRef, TypePath typePath, StringSE descriptor, boolean visible) 例外ハンドラー型のアノテーションにアクセスします。void
visitTryCatchBlock
(Label start, Label end, Label handler, StringSE type) try catch ブロックにアクセスします。visitTypeAnnotation
(int typeRef, TypePath typePath, StringSE descriptor, boolean visible) メソッドシグネチャーの型のアノテーションにアクセスします。void
visitTypeInsn
(int opcode, StringSE type) 型命令を訪問します。void
visitVarInsn
(int opcode, int varIndex) ローカル変数命令を訪問します。
フィールドの詳細
api
protected final int apiこの訪問者によって実装された ASMAPI バージョン。このフィールドの値は、Opcodes
でASM
の x の値のいずれかでなければなりません。mv
このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。null の可能性があります。
コンストラクターの詳細
MethodVisitor
protected MethodVisitor(int api) 新しいMethodVisitor
を構築します。- パラメーター:
api
- この訪問者によって実装された ASMAPI バージョン。Opcodes
でASM
の x の値のいずれかでなければなりません。
MethodVisitor
新しいMethodVisitor
を構築します。- パラメーター:
api
- この訪問者によって実装された ASMAPI バージョン。Opcodes
でASM
の x の値のいずれかでなければなりません。methodVisitor
- このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。null の可能性があります。
メソッドの詳細
getDelegate
このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。null の可能性があります。- 戻り値:
- このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター、または null。
visitParameter
このメソッドのパラメーターを訪問します。- パラメーター:
name
- パラメーター名。指定されていない場合は null。access
- パラメーターのアクセスフラグ、ACC_FINAL
、ACC_SYNTHETIC
、/ およびACC_MANDATED
のみが許可されます(Opcodes
を参照)。
visitAnnotationDefault
このアノテーションインターフェースメソッドのデフォルト値にアクセスします。- 戻り値:
- このアノテーションインターフェースメソッドの実際のデフォルト値にアクセスする訪問者、またはこの訪問者がこのデフォルト値にアクセスすることに関心がない場合は null。このアノテーションビジターのメソッドに渡された「名前」パラメーターは無視されます。さらに、このアノテーションビジターでは、visit メソッドを 1 つだけ呼び出してから、visitEnd を呼び出す必要があります。
visitAnnotation
このメソッドのアノテーションにアクセスします。- パラメーター:
descriptor
- アノテーションクラスのクラス記述子。visible
- 実行時にアノテーションが表示される場合は true。- 戻り値:
- アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
visitTypeAnnotation
public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, StringSE descriptor, boolean visible) メソッドシグネチャーの型のアノテーションにアクセスします。- パラメーター:
typeRef
- アノテーション付き型への参照。この型の参照の種類は、TypeReference.METHOD_TYPE_PARAMETER
、TypeReference.METHOD_TYPE_PARAMETER_BOUND
、TypeReference.METHOD_RETURN
、TypeReference.METHOD_RECEIVER
、TypeReference.METHOD_FORMAL_PARAMETER
、TypeReference.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
このメソッドの非標準属性を訪問します。- パラメーター:
attribute
- 属性。
visitCode
public void visitCode()メソッドのコード(つまり、非抽象メソッド)の訪問を開始します。visitFrame
ローカル変数とオペランドスタック要素の現在の状態にアクセスします。このメソッドは、ジャンプ命令のターゲットである 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_FULL
、Opcodes.F_APPEND
、Opcodes.F_CHOP
、Opcodes.F_SAME
またはOpcodes.F_APPEND
、Opcodes.F_SAME1
である必要があります。numLocal
- 訪問したフレーム内のローカル変数の数。long 値と double 値は、1 つの変数としてカウントされます。local
- このフレームのローカル変数の型。この配列は変更しないでください。プリミティブ型はOpcodes.TOP
、Opcodes.INTEGER
、Opcodes.FLOAT
、Opcodes.LONG
、Opcodes.DOUBLE
、Opcodes.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_BOOLEAN
、Opcodes.T_CHAR
、Opcodes.T_FLOAT
、Opcodes.T_DOUBLE
、Opcodes.T_BYTE
、Opcodes.T_SHORT
、Opcodes.T_INT
、Opcodes.T_LONG
のいずれかである必要があります。
visitVarInsn
public void visitVarInsn(int opcode, int varIndex) ローカル変数命令にアクセスします。ローカル変数命令は、ローカル変数の値をロードまたは格納する命令です。- パラメーター:
opcode
- 訪問するローカル変数命令のオペコード。このオペコードは、ILOAD、LLOAD、FLOAD、DLOAD、ALOAD、ISTORE、LSTORE、FSTORE、DSTORE、ASTORE、RET のいずれかです。varIndex
- 訪問する命令のオペランド。このオペランドは、ローカル変数のインデックスです。
visitTypeInsn
型命令を訪問します。型命令は、クラスの内部名をパラメーターとして受け取る命令です (Type.getInternalName()
を参照)。- パラメーター:
opcode
- 訪問する型命令のオペコード。このオペコードは、NEW、ANEWARRAY、CHECKCAST、INSTANCEOF のいずれかです。type
- 訪問する命令のオペランド。このオペランドは、オブジェクトまたは配列クラスの内部名である必要があります(Type.getInternalName()
を参照)。
visitFieldInsn
フィールドインストラクションを訪問します。フィールド命令は、オブジェクトのフィールドの値をロードまたは格納する命令です。- パラメーター:
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 命令にアクセスします。visitJumpInsn
ジャンプ命令にアクセスします。ジャンプ命令は、別の命令にジャンプする可能性のある命令です。- パラメーター:
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
ラベルにアクセスします。ラベルは、その直後に訪問される命令を示します。- パラメーター:
label
-Label
オブジェクト。
visitLdcInsn
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 }
visitIincInsn
public void visitIincInsn(int varIndex, int increment) IINC 命令を訪問します。- パラメーター:
varIndex
- インクリメントするローカル変数のインデックス。increment
- ローカル変数をインクリメントする量。
visitTableSwitchInsn
TABLESWITCH 命令を訪問します。- パラメーター:
min
- キーの最小値。max
- キーの最大値。dflt
- デフォルトのハンドラーブロックの始まり。labels
- ハンドラーブロックの始まり。labels[i]
は、min + i
キーのハンドラーブロックの先頭です。
visitLookupSwitchInsn
LOOKUPSWITCH 命令を訪問します。- パラメーター:
dflt
- デフォルトのハンドラーブロックの始まり。keys
- キーの値。labels
- ハンドラーブロックの始まり。labels[i]
は、keys[i]
キーのハンドラーブロックの先頭です。
visitMultiANewArrayInsn
MULTIANEWARRAY 命令を訪問します。- パラメーター:
descriptor
- 配列型記述子(Type
を参照)。numDimensions
- 割り当てる配列の次元数。
visitInsnAnnotation
public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, StringSE descriptor, boolean visible) 命令のアノテーションにアクセスします。このメソッドは、アノテーション付き命令の直後に呼び出す必要があります。同じ命令に対して複数回呼び出すことができます。- パラメーター:
typeRef
- アノテーション付き型への参照。この型参照のソートは、TypeReference.INSTANCEOF
、TypeReference.NEW
、TypeReference.CONSTRUCTOR_REFERENCE
、TypeReference.METHOD_REFERENCE
、TypeReference.CAST
、TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT
、TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT
、TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT
、TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT
である必要があります。TypeReference
を参照してください。typePath
- 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は null になることがあります。descriptor
- アノテーションクラスのクラス記述子。visible
- 実行時にアノテーションが表示される場合は true。- 戻り値:
- アノテーション値を訪問する訪問者。この訪問者がこのアノテーションの訪問に興味がない場合は null。
visitTryCatchBlock
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
行番号宣言にアクセスします。- パラメーター:
line
- 行番号。この番号は、クラスがコンパイルされたソースファイルを参照します。start
- この行番号に対応する最初の命令。- 例外:
IllegalArgumentExceptionSE
- この訪問者がstart
にまだアクセスしていない場合(visitLabel(org.springframework.asm.Label)
メソッドによる)。
visitMaxs
public void visitMaxs(int maxStack, int maxLocals) メソッドの最大スタックサイズとローカル変数の最大数にアクセスします。- パラメーター:
maxStack
- メソッドの最大スタックサイズ。maxLocals
- メソッドのローカル変数の最大数。
visitEnd
public void visitEnd()メソッドの最後にアクセスします。最後に呼び出されるこのメソッドは、メソッドのすべてのアノテーションと属性が訪問されたことを訪問者に通知するために使用されます。
visitMethodInsn(int, String, String, String, boolean)
を使用してください。