字节码操作、javassist使用
2020-02-25 16:04:23来源:博客园 阅读 ()
字节码操作、javassist使用
一、功能
1、动态生成新的类
2、动态改变某个类的结构(添加、删除、修改 新的属性、方法)
二、优势
1、比反射开销小,性能高
2、JAVAasist性能高于反射,低于ASM
使用javassist生成一个新的类
javassist入门:
package cn.lhl.test; import javassist.CannotCompileException; import javassist.ClassPool; import javassist.CtClass; import javassist.CtConstructor; import javassist.CtField; import javassist.CtMethod; /** * 测试使用javassist生成一个新的类 * * @author Administrator * */ public class Demo01 { public static void main(String[] args) throws Exception { ClassPool pool = ClassPool.getDefault(); CtClass cc = pool.makeClass("cn.lhl.bean.Emp"); //源码操作 //创建属性 CtField f1 = CtField.make("private int empno;", cc); CtField f2 = CtField.make("private String ename;", cc); cc.addField(f1); cc.addField(f2); //创建方法 CtMethod m1 = CtMethod.make("public int getEmpno(){return empno;}", cc); CtMethod m2 = CtMethod.make("public void setEmpno(int empno){this.empno=empno;})", cc); cc.addMethod(m1); cc.addMethod(m2); //添加构造器 CtConstructor constructor = new CtConstructor(new CtClass[] {CtClass.intType, pool.get("java.lang.String")},cc); constructor.setBody("{this.empno=empno;this.ename=ename;}"); cc.addConstructor(constructor); //将上面构造好的类写入到f:/myjava中 cc.debugWriteFile("f:/myjava"); System.out.println("生成类"); } }
emp类:
package cn.lhl.test; public class Emp { private int empno; private String ename; public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Emp(int empno, String ename) { super(); this.empno = empno; this.ename = ename; } public Emp() { } }
原文链接:https://www.cnblogs.com/lhl0131/p/12360589.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Tomcat 核心配置
下一篇:Java线程池学习总结
- 学习Java 8 Stream Api (4) - Stream 终端操作之 collect 2020-06-11
- Java跨平台原理(字节码文件、虚拟机) 以及Java安全性 2020-06-07
- JVM系列之.JVM内存模型如何正确运用操作?本文详解 2020-06-04
- 我天!xx.equals(null) 是什么骚操作?? 2020-06-01
- 字节跳动一二面过,有点飘,结果第三面准备不足,挂了… 2020-06-01
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash