java asm methodvisitor 定义局部变量_ASM框架学习(三)-FieldVisitor和MethodVisitor

本文详细介绍了ASM框架中FieldVisitor和MethodVisitor的使用,包括它们在访问类的字段和方法字节码过程中的作用,以及各自的访问顺序和关键方法的解析,如visitAnnotation、visitParameter、visitCode等,帮助读者理解如何利用ASM改变Java字节码以实现动态代理和字节码增强。
摘要由CSDN通过智能技术生成

简介

FiedVisitor是用来在访问类的域字节码过程中创建域或者修改域字节码信息的;

MethodVisitor是用来在访问类的方法字节码过程中创建方法或者修改方法字节码信息从而实现改变方法行为;

FieldVisitor

FieldVisitor也是有一定访问顺序的,如下:

其访问顺序为:

( visitAnnotation | visitTypeAnnotation| visitAttribute )* visitEnd

()*中可以访问多次,而visitEnd在访问结束时必须访问一次

FieldVisitor方法解析:

visitAnnotation:访问域的注解;

public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) {

if (fv != null) {

return fv.visitAnnotation(descriptor, visible);

}

return null;

}

其中

descriptor表示注解类的描述,即注解类的描述:如“Ljava/lang/JavaBean”等;

visible表示该注解运行时是否可见;

visitTypeAnnotation:访问域的类型上的注解

public AnnotationVisitor visitTypeAnnotation(

final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {

if (api < Opcodes.ASM5) {

throw new UnsupportedOperationException("This feature requires ASM5");

}

if (fv != null) {

return fv.visitTypeAnnotation(typeRef, typePath, descriptor, visible);

}

return null;

}

visitAttribtue:访问域属性

visitEnd:域访问完成后必须调用该方法;

MethodVisitor方法解析

MethodVisitor其方法访问顺序如下:

( visitParameter )*

[ visitAnnotationDefault ]

( visitAnnotation |visitAnnotableParameterCount | visitParameterAnnotation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值