Java:asm读取class信息

 时间:2024-10-25 12:00:57

java asm框架基本使用示例

工具/原料

asm

jdk

android studio

代码地址:https://git.oschina.net/jackyanngo/ASMSample.git

class文件查看方式

1、使用jdk提供的javap命令

Java:asm读取class信息

7、输出结果:

Java:asm读取class信息Java:asm读取class信息Java:asm读取class信息

11、从输入结果中可以看出:version:version:51 与反编译结果一致flags:access:49 与反编译结果一致Opcodes.ACC_PUBLIC+Opcodes.ACC_FINAL+Opcodes.ACC_SUPER = 49InnerClasses:visitInnerClass, name:com/eventbus/gen/d, outerName:null, innerName:null, access:0visitInnerClass, name:com/eventbus/gen/c, outerName:null, innerName:null, access:0visitInnerClass, name:com/eventbus/gen/b, outerName:null, innerName:null, access:0visitInnerClass, name:com/eventbus/gen/a, outerName:null, innerName:null, access:0visitInnerClass, name:com/sample/app/MainActivity$a, outerName:com/sample/app/MainActivity, innerName:a, access:9method:visitMethod, access:1, name:, desc:()V, signature:null, exceptions:nullvisitMethod, access:1, name:generateSubscribeMethodIndex, desc:(Ljava/lang/Object;)Lcom/a/a/c/d;, signature:null, exceptions:null

12、使用MethodVisitor读取BusIndex.class中方法的详细信息ClassVisitor的visitMethod只能获取方法的基本信息,如果要获取方法的详细信息就必须在visitMethod返回一个自定义的MethodVisitor。

Java:asm读取class信息Java:asm读取class信息Java:asm读取class信息Java:asm读取class信息

14、输出结果:

Java:asm读取class信息Java:asm读取class信息Java:asm读取class信息

15、从结果中可以看出visitor method begin与visitor method ended之间输出的就是generateSubscribeMethodIndex的具体信息

16、同理如果要读取字段,枚举,变量等的具体信息在相应的方法中返回自定义的visitor即可

  • 详细教你做小麦胚芽面包
  • Django后台怎么部署
  • 如何挑选吸油烟机
  • LK-5型光谱仪使用说明书
  • 热门搜索
    高考提前批是什么意思 什么是电话销售 ktv公主是做什么的 牙套的作用 升级显卡驱动有什么用 办宽带需要什么 做酸菜鱼用什么鱼好 富士康是干什么的 软着陆是什么意思 什么是危机公关