[ASM教程]#2生成类

简介: 使用classWriter生成类

首发于Enaium的个人博客


public class Learn2 {
   
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
   
        ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS);
        classWriter.visit(V1_8, ACC_PUBLIC, "cn/enaium/learn/asm/learn2/Learn2Test", null, "java/lang/Object", null);//类信息
        MethodVisitor methodVisitor = classWriter.visitMethod(ACC_PUBLIC + ACC_STATIC, "render", "()V", null, null);//插入方法
        methodVisitor.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");//插入字段
        methodVisitor.visitLdcInsn("Hello ASM!");//插入LDC
        methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);//插入方法
        methodVisitor.visitMaxs(2, 1);//设置栈和局部变量大小
        methodVisitor.visitInsn(RETURN);//插入返回
        methodVisitor.visitEnd();//结束
        classWriter.visitEnd();//结束

        //生成类
        try {
   
            FileOutputStream out = new FileOutputStream(Learn2.class.getResource("/cn/enaium/learn/asm/learn2/").getPath() + "Learn2Test.class");
            out.write(classWriter.toByteArray());
            out.close();
        } catch (Exception e) {
   
            e.printStackTrace();
        }
    }
}
AI 代码解读
Enaium
+关注
目录
打赏
0
0
0
0
3
分享
相关文章
|
11月前
|
访问者模式问题之在ASM中,实现一个访问者来删除指定的类属性,如何解决
访问者模式问题之在ASM中,实现一个访问者来删除指定的类属性,如何解决
使用ASM为一个类增加属性工具类
使用ASM为一个类增加属性工具类
127 0
使用ASM动态生成类的拦截代理类
使用ASM动态生成类的拦截代理类
148 0
ASM 框架:字节码操作的常见用法(生成类,修改类,方法插桩,方法注入)
ASM 框架:字节码操作的常见用法(生成类,修改类,方法插桩,方法注入)
262 0
[ASM教程]#4创建对象和数组
这期我们要创建一个对象和数组。
161 0
[ASM教程]#1分析类
ASM是一种通用Java字节码操作和分析框架,它可以用于修改现有的class文件或动态生成class文件。
275 0
[ASM教程]#6树API
使用树API来生成一个类
111 0
[ASM教程]#5字符串混淆
测试类,需要混淆这里所有的字符串,上一期我们学习了如果插入一个常量,那么拦截插入常量的时候判断是不是字符串,如果是就混淆它。
143 0
[ASM教程]#3增加移除类成员
可以委托一个ClassWriter。
113 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问