栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

产生一个“你好,世界!” Java ASM库创建类

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

产生一个“你好,世界!” Java ASM库创建类

您可以使用java编译一个类,然后获取asm打印出生成等效类所需的调用,

常问问题

ASMifierClassVisitor

ASMifierClassVisitor javadocs实际上包含了hello world代码,

import org.objectweb.asm.*;public class HelloDump implements Oppres {  public static byte[] dump() throws Exception {     ClassWriter cw = new ClassWriter(0);     FieldVisitor fv;     MethodVisitor mv;     AnnotationVisitor av0;     cw.visit(49,  ACC_PUBLIC + ACC_SUPER,  "Hello",  null,  "java/lang/Object",  null);     cw.visitSource("Hello.java", null);     {         mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);         mv.visitVarInsn(ALOAD, 0);         mv.visitMethodInsn(INVOKESPECIAL,      "java/lang/Object",      "<init>",      "()V");         mv.visitInsn(RETURN);         mv.visitMaxs(1, 1);         mv.visitEnd();     }     {         mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC,      "main",      "([Ljava/lang/String;)V",      null,      null);         mv.visitFieldInsn(GETSTATIC,      "java/lang/System",      "out",      "Ljava/io/PrintStream;");         mv.visitLdcInsn("hello");         mv.visitMethodInsn(INVOKEVIRTUAL,      "java/io/PrintStream",      "println",      "(Ljava/lang/String;)V");         mv.visitInsn(RETURN);         mv.visitMaxs(2, 1);         mv.visitEnd();     }     cw.visitEnd();     return cw.toByteArray();  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508636.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号