java asm类_java ASM 分析类

实现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 =

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值