javassist简单使用

javassist简介

Javassist是一个开源的分析、编辑和创建Java字节码的类库。


demo目的给一个字节码里面的构造方法添加一个输出语句

  • 待添加的java类
package com.suse.yuxin;
public class User {
    private String userName;
    private String userNumber;
    
    public User(String userName, String userNumber) {
        super();
        this.userName = userName;
        this.userNumber = userNumber;
    }
    
  }
  • 测试代码
public class TestAssist {
    public static void main(String args[]) throws NotFoundException, CannotCompileException, IOException{
        ClassPool pool = ClassPool.getDefault();
        //设置classPath
        pool.appendClassPath("D:\\javaworkspace\\Test\\bin");
        //获取一个class文件
        CtClass ctClass = pool.get("com.suse.yuxin.User");
        //获取构造方法
        CtConstructor ctConstructor = ctClass.getConstructors()[0];
        //插入输出语句
        ctConstructor.insertAfter("System.out.println();");
        ctClass.writeFile("D:\\javaworkspace\\Test\\bin\\output");
        System.out.println("OK");
    }
    
    }
  • 反编译查看



工具

  • javassist jar 包使用的是3.9.0
  • 反编译使用的工具是 jd-gui

Nothing is certain in this life. The only thing i know for sure is that. I love you and my life. That is the only thing i know. have a good day

:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,766评论 0 33
  • 接着上一节,小博老师继续介绍这个案例。我们接下来看看id元素的相关使用方法。 Hibernate使用的元素标记ja...
    博为峰51Code教研组阅读 80评论 0 0
  • 孝道是每一个人的必修课,父母生养不易,孩子应当对父母敬畏,用自己的方式和能力来赡养父母。今天看到一个非常感人的故事...
    斯嘉丽薇阅读 277评论 0 0