Eclipse下Javassist怎么用
这篇文章主要介绍Eclipse下Javassist怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联公司专注于成县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供成县营销型网站建设,成县网站制作、成县网页设计、成县网站官网定制、微信小程序开发服务,打造成县网络公司原创品牌,更为您提供成县网站排名全网营销落地服务。
示例如下
项目的结构:

Editable.java:
package com.thrblock.javassist;
public class Editable {
public void showInfo(){
System.out.println("InfoDefault!");
}
}Main.java:
package com.thrblock.javassist;
import java.io.IOException;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.CtNewMethod;
import javassist.NotFoundException;
public class Main {
public static void main(String[] args) {
ClassPool pool = ClassPool.getDefault();
try{
pool.insertClassPath(".\\bin");
//设置根路径。(这里设置的根路径显然没被writeFile使用)
CtClass cc = pool.makeClass("com.thrblock.javassist.EditableChanged");
//模拟Hibernate代理模式,我们创建一个新类
cc.setSuperclass(pool.get("com.thrblock.javassist.Editable"));
//设置其父类
CtMethodcm = CtNewMethod.make("public void showInfo(){super.showInfo();System.out.println(\"CustomInsertHAHA!\");}",cc);
//追加一个方法,注意它覆盖了父类中的方法。
cc.addMethod(cm);
cc.writeFile(".\\bin");
//这里比较重要,空参的结果就是没有保存到eclipse字节码根路径里。
}
catch (NotFoundException | CannotCompileException | IOException e) {
e.printStackTrace();
}
try{
Class> cl = Class.forName("com.thrblock.javassist.EditableChanged");
//加载我们的新类
Editableed = (Editable) cl.newInstance();
//由于其继承与Editable类,这里和Hibernate里的load道理一样。
ed.showInfo();
//调用方法。
}
catch (ClassNotFoundException | InstantiationException |IllegalAccessException e) {
e.printStackTrace();
}
}
}打印结果:
InfoDefault!
CustomInsertHAHA!
其他注意事项:
由于我们是生成了一个类,如果这个类名和原类名一样,则会覆盖class文件,但是如果修改之前该class已经被JVM装入,则修改的部分不会生效,必须重启JVM。
以上是“Eclipse下Javassist怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
标题名称:Eclipse下Javassist怎么用
分享路径:http://www.jxjierui.cn/article/pjidjg.html


咨询
建站咨询
