public abstract class MethodVisitor extends ObjectSE
| 修飾子と型 | フィールドと説明 |
|---|---|
protected int | api このビジターによって実装された ASM API バージョン。 |
protected MethodVisitor | mv このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。 |
| コンストラクターと説明 |
|---|
MethodVisitor(int api) 新しい MethodVisitor を構築します。 |
MethodVisitor(int api, MethodVisitor mv) 新しい MethodVisitor を構築します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
AnnotationVisitor | visitAnnotation(StringSE desc, boolean visible) このメソッドのアノテーションにアクセスします。 |
AnnotationVisitor | visitAnnotationDefault() このアノテーションインターフェースメソッドのデフォルト値にアクセスします。 |
void | visitAttribute(Attribute attr) このメソッドの非標準属性を訪問します。 |
void | visitCode() メソッドのコードの訪問を開始します(ある場合)。 |
void | visitEnd() メソッドの最後にアクセスします。 |
void | visitFieldInsn(int opcode, StringSE owner, StringSE name, StringSE desc) 現場指示を訪問します。 |
void | visitFrame(int type, int nLocal, ObjectSE[] local, int nStack, ObjectSE[] stack) ローカル変数とオペランドスタック要素の現在の状態にアクセスします。 |
void | visitIincInsn(int var, int increment)IINC 命令を訪問します。 |
void | visitInsn(int opcode) ゼロオペランド命令にアクセスします。 |
AnnotationVisitor | visitInsnAnnotation(int typeRef, TypePath typePath, StringSE desc, boolean visible) 指示のアノテーションにアクセスします。 |
void | visitIntInsn(int opcode, int operand) 単一の int オペランドを持つ命令を訪問します。 |
void | visitInvokeDynamicInsn(StringSE name, StringSE desc, Handle bsm, ObjectSE... bsmArgs)invokedynamic 命令にアクセスします。 |
void | visitJumpInsn(int opcode, Label label) ジャンプ命令を訪問します。 |
void | visitLabel(Label label) ラベルにアクセスします。 |
void | visitLdcInsn(ObjectSE cst)LDC 命令を訪問します。 |
void | visitLineNumber(int line, Label start) 行番号宣言にアクセスします。 |
void | visitLocalVariable(StringSE name, StringSE desc, StringSE signature, Label start, Label end, int index) ローカル変数宣言にアクセスします。 |
AnnotationVisitor | visitLocalVariableAnnotation(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, StringSE desc, 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 desc) 使用すべきではありません。 |
void | visitMethodInsn(int opcode, StringSE owner, StringSE name, StringSE desc, boolean itf) メソッドの説明にアクセスします。 |
void | visitMultiANewArrayInsn(StringSE desc, int dims)MULTIANEWARRAY 命令を訪問します。 |
void | visitParameter(StringSE name, int access) このメソッドのパラメーターを訪問します。 |
AnnotationVisitor | visitParameterAnnotation(int parameter, StringSE desc, boolean visible) このメソッドのパラメーターのアノテーションにアクセスします。 |
void | visitTableSwitchInsn(int min, int max, Label dflt, Label... labels)TABLESWITCH 命令を訪問します。 |
AnnotationVisitor | visitTryCatchAnnotation(int typeRef, TypePath typePath, StringSE desc, boolean visible) 例外ハンドラー型のアノテーションにアクセスします。 |
void | visitTryCatchBlock(Label start, Label end, Label handler, StringSE type)try catch ブロックにアクセスします。 |
AnnotationVisitor | visitTypeAnnotation(int typeRef, TypePath typePath, StringSE desc, boolean visible) メソッドシグネチャーの型のアノテーションにアクセスします。 |
void | visitTypeInsn(int opcode, StringSE type) 型命令を訪問します。 |
void | visitVarInsn(int opcode, int var) ローカル変数命令を訪問します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected final int api
protected MethodVisitor mv
public MethodVisitor(int api)
MethodVisitor を構築します。api - この訪問者によって実装された ASMAPI バージョン。Opcodes.ASM4、Opcodes.ASM5、Opcodes.ASM6 のいずれかである必要があります。public MethodVisitor(int api,
MethodVisitor mv)MethodVisitor を構築します。api - この訪問者によって実装された ASMAPI バージョン。Opcodes.ASM4、Opcodes.ASM5、Opcodes.ASM6 のいずれかである必要があります。mv - このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。null の可能性があります。public void visitParameter(StringSE name, int access)
name - パラメーター名。指定されていない場合は null。access - パラメーターのアクセスフラグは、 ACC_FINAL 、 ACC_SYNTHETIC 、または / および ACC_MANDATED のみが許可されます(Opcodes を参照)。public AnnotationVisitor visitAnnotationDefault()
public AnnotationVisitor visitAnnotation(StringSE desc, boolean visible)
desc - アノテーションクラスのクラス記述子。visible - true アノテーションが実行時に表示される場合。public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, StringSE desc, boolean visible)
typeRef - アノテーション付き型への参照。この型の参照の種類は、METHOD_TYPE_PARAMETER、METHOD_TYPE_PARAMETER_BOUND、METHOD_RETURN、METHOD_RECEIVER、METHOD_FORMAL_PARAMETER、THROWS である必要があります。TypeReference を参照してください。typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は、null になることがあります。desc - アノテーションクラスのクラス記述子。visible - true アノテーションが実行時に表示される場合。public AnnotationVisitor visitParameterAnnotation(int parameter, StringSE desc, boolean visible)
parameter - パラメーターインデックス。desc - アノテーションクラスのクラス記述子。visible - true アノテーションが実行時に表示される場合。public void visitAttribute(Attribute attr)
attr - 属性。public void visitCode()
public void visitFrame(int type,
int nLocal,
ObjectSE[] local,
int nStack,
ObjectSE[] stack)V1_6 以上のクラスにのみ必須です。Opcodes.F_SAME は、前のフレームとまったく同じローカルで、スタックが空のフレームを表します。Opcodes.F_SAME1 は、前のフレームとまったく同じローカルで、スタック上の単一の値を持つフレームを表します(nStack は 1 で、stack[0] にはスタックアイテムの型の値が含まれます)。Opcodes.F_APPEND は、追加のローカルが定義されていることを除いて、前のフレームのローカルと同じです(nLocal は 1, 2 または 3 であり、local 要素には追加された型を表す値が含まれます)。Opcodes.F_CHOP は、最後の 1 〜 3 のローカルが存在せず、スタックが空であることを除いて、前のフレームのローカルと同じです(nLocals は 1, 2 または 3 です)。Opcodes.F_FULL。type - このスタックマップフレームの型。拡張フレームの場合は Opcodes.F_NEW、圧縮フレームの場合は Opcodes.F_FULL、Opcodes.F_APPEND、Opcodes.F_CHOP、Opcodes.F_SAME または Opcodes.F_APPEND、Opcodes.F_SAME1 である必要があります。nLocal - 訪問したフレーム内のローカル変数の数。local - このフレームのローカル変数型。この配列は変更しないでください。プリミティブ型は、Opcodes.TOP、Opcodes.INTEGER、Opcodes.FLOAT、Opcodes.LONG、Opcodes.DOUBLE、Opcodes.NULL、Opcodes.UNINITIALIZED_THIS で表されます(long と double は単一の要素で表されます)。参照型は String オブジェクト(内部名を表す)で表され、初期化されていない型は Label オブジェクトで表されます(このラベルは、この初期化されていない値を作成した NEW 命令を示します)。nStack - 訪問したフレームのオペランドスタック要素の数。stack - このフレームのオペランドスタック型。この配列は変更しないでください。その内容は「ローカル」配列と同じ形式です。IllegalStateExceptionSE - フレームが次のフレームの直後にアクセスされ、2 つの間に命令がない場合(このフレームが Opcodes#F_SAME フレームである場合を除き、この場合は確認なしで無視されます)。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.public void visitIntInsn(int opcode,
int operand)opcode - 訪問する命令のオペコード。このオペコードは、BIPUSH、SIPUSH、NEWARRAY のいずれかです。operand - 訪問する命令のオペランド。Opcodes.T_BOOLEAN、Opcodes.T_CHAR、Opcodes.T_FLOAT、Opcodes.T_DOUBLE、Opcodes.T_BYTE、Opcodes.T_SHORT、Opcodes.T_INT、Opcodes.T_LONG のいずれかである必要があります。public void visitVarInsn(int opcode,
int var)opcode - 訪問するローカル変数命令のオペコード。このオペコードは、ILOAD、LLOAD、FLOAD、DLOAD、ALOAD、ISTORE、LSTORE、FSTORE、DSTORE、ASTORE、RET のいずれかです。var - 訪問する命令のオペランド。このオペランドは、ローカル変数のインデックスです。public void visitTypeInsn(int opcode,
StringSE type)opcode - 訪問する型命令のオペコード。このオペコードは、NEW、ANEWARRAY、CHECKCAST、INSTANCEOF のいずれかです。type - 訪問する命令のオペランド。このオペランドは、オブジェクトまたは配列クラスの内部名である必要があります(getInternalName を参照)。public void visitFieldInsn(int opcode,
StringSE owner,
StringSE name,
StringSE desc)opcode - 訪問する型命令のオペコード。このオペコードは、GETSTATIC、PUTSTATIC、GETFIELD、PUTFIELD のいずれかです。owner - フィールドの所有者クラスの内部名(getInternalName を参照)。name - フィールドの名前。desc - フィールドの記述子(Type を参照)@DeprecatedSE public void visitMethodInsn(int opcode, StringSE owner, StringSE name, StringSE desc)
opcode - 訪問する型命令のオペコード。このオペコードは、INVOKEVIRTUAL、INVOKESPECIAL、INVOKESTATIC、INVOKEINTERFACE のいずれかです。owner - メソッドの所有者クラスの内部名(getInternalName を参照)。name - メソッドの名前。desc - メソッドの記述子(Type を参照)public void visitMethodInsn(int opcode,
StringSE owner,
StringSE name,
StringSE desc,
boolean itf)opcode - 訪問する型命令のオペコード。このオペコードは、INVOKEVIRTUAL、INVOKESPECIAL、INVOKESTATIC、INVOKEINTERFACE のいずれかです。owner - メソッドの所有者クラスの内部名(getInternalName を参照)。name - メソッドの名前。desc - メソッドの記述子(Type を参照)itf - メソッドの所有者クラスがインターフェースの場合。public void visitInvokeDynamicInsn(StringSE name, StringSE desc, Handle bsm, ObjectSE... bsmArgs)
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 - 訪問する命令のオペランド。このオペランドは、ジャンプ命令がジャンプできる命令を指定するラベルです。public void visitLabel(Label label)
label - Label オブジェクト。public void visitLdcInsn(ObjectSE cst)
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 {
// throw an exception
}
cst - the constant to be loaded on the stack. This parameter must be a non null IntegerSE, a FloatSE, a LongSE, a DoubleSE, a StringSE, a Type of OBJECT or ARRAY sort for .class constants, for classes whose version is 49.0, a Type of METHOD sort or a Handle for MethodType and MethodHandle constants, for classes whose version is 51.0.public void visitIincInsn(int var,
int increment)var - インクリメントするローカル変数のインデックス。increment - ローカル変数をインクリメントする量。public void visitTableSwitchInsn(int min,
int max,
Label dflt,
Label... labels)min - キーの最小値。max - キーの最大値。dflt - デフォルトのハンドラーブロックの始まり。labels - ハンドラーブロックの始まり。 labels [i] は、 min + i キーのハンドラーブロックの先頭です。public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
dflt - デフォルトのハンドラーブロックの始まり。keys - キーの値。labels - ハンドラーブロックの始まり。 labels [i] は、 keys [i] キーのハンドラーブロックの先頭です。public void visitMultiANewArrayInsn(StringSE desc, int dims)
desc - 配列型記述子(Type を参照)。dims - 割り当てる配列の次元数。public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, StringSE desc, boolean visible)
typeRef - アノテーション付き型への参照。この型参照のソートは、INSTANCEOF、NEW、CONSTRUCTOR_REFERENCE、METHOD_REFERENCE、CAST、CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT、METHOD_INVOCATION_TYPE_ARGUMENT、CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT、METHOD_REFERENCE_TYPE_ARGUMENT である必要があります。TypeReference を参照してください。typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は、null になることがあります。desc - アノテーションクラスのクラス記述子。visible - true アノテーションが実行時に表示される場合。public void visitTryCatchBlock(Label start, Label end, Label handler, StringSE type)
start - 例外ハンドラーのスコープの先頭(両端を含む)。end - 例外ハンドラーのスコープの終わり(排他的)。handler - 例外ハンドラーのコードの始まり。type - ハンドラーによって処理される例外の型の内部名、または例外をキャッチするための null ( "finally" ブロックの場合)。IllegalArgumentExceptionSE - ラベルの 1 つがこの訪問者によってすでに訪問されている場合(visitLabel メソッドによる)。public AnnotationVisitor visitTryCatchAnnotation(int typeRef, TypePath typePath, StringSE desc, boolean visible)
visitTryCatchBlock(org.springframework.asm.Label, org.springframework.asm.Label, org.springframework.asm.Label, java.lang.String) の後に呼び出す必要があります。同じ例外ハンドラーに対して複数回呼び出すことができます。typeRef - アノテーション付きの型への参照。この型参照の種類は EXCEPTION_PARAMETER でなければなりません。TypeReference を参照してください。typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は、null になることがあります。desc - アノテーションクラスのクラス記述子。visible - true アノテーションが実行時に表示される場合。public void visitLocalVariable(StringSE name, StringSE desc, StringSE signature, Label start, Label end, int index)
name - ローカル変数の名前。desc - このローカル変数の型記述子。signature - このローカル変数の型シグネチャー。ローカル変数型がジェネリクス型を使用しない場合は、 null になる可能性があります。start - このローカル変数のスコープに対応する最初の命令(両端を含む)。end - このローカル変数のスコープに対応する最後の命令(排他的)。index - ローカル変数のインデックス。IllegalArgumentExceptionSE - ラベルの 1 つがこの訪問者によってまだ訪問されていない場合(visitLabel メソッドによる)。public AnnotationVisitor visitLocalVariableAnnotation(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, StringSE desc, boolean visible)
typeRef - アノテーション付き型への参照。この型参照の種類は、LOCAL_VARIABLE または RESOURCE_VARIABLE である必要があります。TypeReference を参照してください。typePath - 'typeRef' 内のアノテーション付き型引数、ワイルドカード境界、配列要素型、静的内部型へのパス。アノテーションが 'typeRef' 全体を対象とする場合は、null になることがあります。start - このローカル変数のスコープを構成する連続範囲に対応する最初の命令(両端を含む)。end - このローカル変数のスコープを作成する連続範囲に対応する最後の命令(排他的)。この配列は、「開始」配列と同じサイズである必要があります。index - 各範囲のローカル変数のインデックス。この配列は、「開始」配列と同じサイズである必要があります。desc - アノテーションクラスのクラス記述子。visible - true アノテーションが実行時に表示される場合。public void visitLineNumber(int line,
Label start)line - 行番号。この番号は、クラスがコンパイルされたソースファイルを参照します。start - この行番号に対応する最初の命令。IllegalArgumentExceptionSE - start がこの訪問者によってまだ訪問されていない場合(visitLabel メソッドによる)。public void visitMaxs(int maxStack,
int maxLocals)maxStack - メソッドの最大スタックサイズ。maxLocals - メソッドのローカル変数の最大数。public void visitEnd()