2019独角兽企业重金招聘Python工程师标准>>>

实现ClassVisitor接口

package com.uwo.resources.asm.test;import org.objectweb.asm.*;/*** Created by yanhao on 2017/5/15.*/
public class UwoClassVisitor implements ClassVisitor{public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {System.out.println("visit");}public void visitOuterClass(String owner, String name, String desc) {System.out.println("visitOuterClass");}public void visitInnerClass(String name, String outerName, String innerName, int access) {System.out.println("visitInnerClass");}public void visitAttribute(Attribute attr) {System.out.println("visitAttribute");}public void visitSource(String source, String debug) {System.out.println("visitSource");}public AnnotationVisitor visitAnnotation(String desc, boolean visible) {System.out.println("Annotation===========start==========");System.out.println("Annotation desc = " + desc);System.out.println("Annotation visible = " + visible);System.out.println("Annotation===========end==========");return null;}public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {System.out.println("Field===========start==========");System.out.println("Field access = " + access);System.out.println("Field name = " + name);System.out.println("Field desc = " + desc);System.out.println("Field signature = " + signature);System.out.println("Field value = " + value);System.out.println("Field===========end==========");return null;}public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {System.out.println("Method===========start==========");System.out.println("Method access = " + access);System.out.println("Method name = " + name);System.out.println("Method desc = " + desc);System.out.println("Method signature = " + signature);System.out.println("Method exceptions = " + exceptions);System.out.println("Method===========end==========");return null;}public void visitEnd() {System.out.println("visitEnd");}
}

执行代码

try {ClassReader cr = new ClassReader(Uwo.class.getName());cr.accept(new UwoClassVisitor(), 0);
} catch (IOException e) {e.printStackTrace();
}

执行结果

visit
visitSource
Field===========start==========
Field access = 4
Field name = name
Field desc = Ljava/lang/String;
Field signature = null
Field value = null
Field===========end==========
Field===========start==========
Field access = 4
Field name = sex
Field desc = Ljava/lang/Integer;
Field signature = null
Field value = null
Field===========end==========
Method===========start==========
Method access = 1
Method name = <init>
Method desc = (Ljava/lang/String;)V
Method signature = null
Method exceptions = null
Method===========end==========
Method===========start==========
Method access = 1
Method name = hello
Method desc = (Ljava/lang/String;)Ljava/lang/String;
Method signature = null
Method exceptions = null
Method===========end==========
Method===========start==========
Method access = 1
Method name = run
Method desc = ()V
Method signature = null
Method exceptions = null
Method===========end==========
visitEnd

转载于:https://my.oschina.net/yan5845hao/blog/900182

java ASM 分析类相关推荐

  1. 注解和反射详细笔记。自定义注解,元注解,内置注解。反射机制,Java Reflection,Java内存分析,反射操作注解,java.lang.reflect.Method,Class

    文章目录 注解 什么是注解 内置注解 元注解 自定义注解 反射机制 静态语言 vs 静态语言 Java Reflection 反射相关的主要API Class类 Java内存分析 创建运行时类的对象 ...

  2. java asm tree_使用ASM 4处理Java类文件–第二部分:Tree API

    java asm tree 什么是ASM树API: ASM树API是ASM的一部分,可让您创建/修改内存中的类. 该类被视为信息树. 像整个类一样,它是ClassNode的实例,其中包含FieldNo ...

  3. 使用UML工具分析类图与类的关系-bouml(java和C++)

    在分析类之间的关系时可以借助工具来实现. bouml是一个UML分析工具,最新的版本是收费的,但是之前的版本是免费的. 这里使用的是4.23版. Bouml安装: 安装软件就按照流程走就行了.但是第一 ...

  4. JAVA的反射机制==用反射分析类的实现

    反射的概念:能够分析具体类的能力的程序称为反射 (JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及 ...

  5. Java ASM框架与字节码插桩的常见用法(生成类,修改类,方法插桩,方法注入)

    前言 ASM 是一款读写Java字节码的工具,可以达到跳过源码编写,编译,直接以字节码的形式创建类,修改已经存在类(或者jar中的class)的属性,方法等. 通常用来开发一些Java开发的辅助框架, ...

  6. java中匿名类例题的简要分析

    在学习java的继承的过程中遇到这样的一个分析类题目,比较有意思,在这里做出简要分析: //请写出以下程序运行结果:package test; public class Test {public st ...

  7. Parasoft、SmartBear和Gimpel Software测试分析类产品对比评测

    2019独角兽企业重金招聘Python工程师标准>>> 测试分析是软件生命周期中十分重要的一个过程,是产品发布.提交给最终用户前的稳定化阶段.通过有效的测试分析可以在项目投入运行之前 ...

  8. java dump分析工具_java性能分析与常用工具

    本次源码已放在Github:https://github.com/nateshao/jvm-tuning 个人博客 https://nateshao.gitee.io http://www.nates ...

  9. 在java中下列描述错误的是_在 JAVA 中 , 关于类的方法 , 下列描述错误的是 ()._学小易找答案...

    [多选题]价值的特性是 [简答题]输入任一字符串,统计其中数字,字母及其它字符个数 .(25分) [填空题]1.产品整体包括哪五个基本层次 2核心层次产品最基本的层次,是产品的_____ [单选题]纸 ...

最新文章

  1. C语言求幺元的函数,离散数学实验指导书及其答案.doc
  2. dubbo+zookeeper+dubbo管理控制台实践demo
  3. 【Linux】一步一步学Linux——history命令(213)
  4. 使用Java解决您的数据科学问题
  5. Docker学习笔记
  6. ThinkPHP5 封装邮件发送服务(可发附件)
  7. 敏捷无敌之重任在肩(7)
  8. 【可视化应用案例】使用ProPlot绘制兰伯特投影的填色图
  9. redis通过key模糊搜索_Redis中关于Key的模糊查找
  10. 100流明相当于多少w_lx和瓦数换算(1lx等于多少w)
  11. python核心教程:min函数和max函数用法
  12. html 加爱心符号,心形符号大全
  13. 关于oppo和vivo这两年强势崛起的反思
  14. c程序语言难么,c语言难不难
  15. 论文阅读:Meta-Learning in Neural Networks: A Survey
  16. 模型压缩工具Distiller-INT8量化
  17. android 图片格式 xvg,大势所趋,应用如何适配Android P HEIF图片格式
  18. CentOS7中:安装ifconfig命令
  19. Datawhale--组队学习第12期--python爬虫基础学习---Task03:Task03:session和cookie、ip代理、selenium自动化 拔高:丁香园留言板爬取(2天)
  20. 计算机基础知识——计算机概述(CSP-J组初赛知识点)

热门文章

  1. java对象的状态,Java编程菜鸟课程:状态对象
  2. mysql date week_mysql weekday(date)/subdate(date,间隔天数)查询年龄/本月/周过生日
  3. vue源码解析pdf_Vue源码全面解析八 callHook函数(触发生命周期函数)
  4. python list倒序_Python基础-不一样的切片操作
  5. 【 FPGA 】寄存器输出的不稳定态
  6. 实时计算Flink 产品定价——续费和变配
  7. 将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29
  8. DDD峰会归来话DDD
  9. javascript里的prototype
  10. 爱因斯坦谜题解答(三种算法比较)